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") 
+0

エラーログはありますか? – error2007s

+0

私はしますが、自分の質問に答えたと思います。私は書いた後に.mode( "append")を追加し、すべてがうまくいったので、並行処理の問題があったはずです。 –

答えて

2

私はそれは私が私のコードを変更し、同時実行の問題だったと思います。