1
Spark 2.0.0でバグの原因を見つけようとしていますが、私はキーとしてテーブル名とデータフレームを値として保持するマップを持っています。それをループし、最終的にはすべてをS3ディレクトリに書き込むためにspark-avro(3.0.0-preview2)を使用します。それは完璧にローカル(もちろんs3パスの代わりにローカルパス)で動作しますが、AmazonのEMRで実行すると、しばらく実行され、フォルダがすでに存在して終了していると言います(これは同じキー値そのループで複数回使用されています、そうですか?)。おそらくスレッディングに関する問題でしょうか?Amazon EMRとS3、org.apache.spark.sql.AnalysisException:パスs3://..../var/tableはすでに存在しています
decryptedCurrTable.write.mode("append").avro(s"s3://..../$k/table")
decryptedCurrTableData.write.mode("append").avro(s"s3://..../$k/tableData")
そして、すべてがうまく働いていた:
for ((k, v) <- tableMap) {
val currTable: DataFrame = tableMap(k)
val decryptedCurrTable = currTable.withColumn("data", decryptUDF(currTable("data")))
val decryptedCurrTableData = sparkSession.sqlContext.read.json(decryptedCurrTable.select("data").rdd.map(row => row.toString()))
decryptedCurrTable.write.avro(s"s3://..../$k/table")
decryptedCurrTableData.write.avro(s"s3://..../$k/tableData")
エラーログはありますか? – error2007s
私はしますが、自分の質問に答えたと思います。私は書いた後に.mode( "append")を追加し、すべてがうまくいったので、並行処理の問題があったはずです。 –