我试图在Spark 2.0.0上找到bug的来源,我有一个映射,它将表名作为键,数据帧作为值,我循环遍历它,最后使用spark-avro (3.0.0-preview2)将所有内容写入S3目录。它在本地运行得很好(当然是本地路径,而不是s3路径),但当我在亚马逊的电子病历上运行它时,它会运行一段时间,然后它会说文件夹已经存在并终止(这意味着同一键值在for循环中被多次使用,对吧?)。这可能是线程化的问题吗?
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")发布于 2016-08-04 03:28:44
我认为这是一个并发问题,我将代码更改为:
decryptedCurrTable.write.mode("append").avro(s"s3://..../$k/table")
decryptedCurrTableData.write.mode("append").avro(s"s3://..../$k/tableData") 一切都运行得很好。
https://stackoverflow.com/questions/38748838
复制相似问题