Ich versuche, die Quelle eines Fehlers auf Spark 2.0.0 zu finden, Ich habe eine Karte, die Tabellennamen als Schlüssel und den Datenrahmen als Wert enthält. Ich durchlaufe sie und verwende am Ende spark-avro (3.0.0-preview2), um alles in S3-Verzeichnisse zu schreiben. Es läuft perfekt lokal (mit einem lokalen Pfad anstelle von einem s3 Pfad natürlich), aber wenn ich es auf Amazon EMR läuft es läuft für eine Weile und dann sagt es der Ordner bereits existiert und endet (was würde bedeuten, dass der gleiche Schlüsselwert wird in dieser for-Schleife mehr als einmal verwendet, oder?). Ist das möglicherweise ein Problem mit Threading?Amazon EMR und S3, org.apache.spark.sql.AnalysisException: Pfad s3: //..../var/table existiert bereits
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")
Haben Sie Fehlerprotokolle? – error2007s
tue ich, aber ich glaube, ich habe meine eigene Frage beantwortet. Ich habe nach dem Schreiben einen .mode ("append") hinzugefügt und alles hat funktioniert, also muss es ein Concurrency-Problem sein. –