0

我正在尝试使用 pysparkn 和 spark-csv 使用以下代码将 spark 数据帧写入 s3

df1.filter( df1['y'] == 2)\
            .withColumnRenamed("x",'a')\
            .select("a","b","c")\
            .write\
            .format('com.databricks.spark.csv')\
            .options(header="true")\
            .options(codec="org.apache.hadoop.io.compress.BZip2Codec")\
            .save('s3://bucket/abc/output")

但是,我收到“输出目录已经存在”的错误,我确定在作业开始之前输出目录不存在,我尝试使用不同的输出目录名称运行,但写入仍然失败。

如果我在作业失败后查看 s3 存储桶,我发现 spark 写入的部分文件很少,但是当它尝试写入更多时它失败了,脚本在本地运行良好,我在 aws 集群上使用 10 个 spark 执行器。有谁知道这段代码有什么问题?

4

1 回答 1

1

尝试使用下面的代码应该可以解决问题。在内部它使用 Hadoop api 来检查文件的存在。请检查日志到执行程序。你可能会发现一些有用的东西。

df1.filter( df1['y'] == 2)\
            .withColumnRenamed("x",'a')
            .select("a","b","c")
            .write
            .mode(Overwrite)
            .format('com.databricks.spark.csv')
            .options(header="true")
            .options(codec="org.apache.hadoop.io.compress.BZip2Codec")
            .save('s3://bucket/abc/output")
于 2015-12-24T05:59:04.193 回答