spark使用spark-csv写入数据帧失败

时间:2015-12-24 02:32:50

标签: apache-spark pyspark spark-csv

我正在尝试使用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执行器。有没有人知道这段代码有什么问题?

1 个答案:

答案 0 :(得分: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")