2015-12-24 152 views
0

我想写火花数据框使用pysparkn到S3和火花CSV使用下面的代码火花采用火花CSV失败

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存储桶,发现有少量零件文件是由火花写入的,但是当它尝试写入更多故障时,脚本在本地运行良好,我在aws上使用10个火花执行器簇。有没有人知道这段代码有什么问题?

回答

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

谢谢,我会试试这个 – pragnesh

+0

生成错误:名称'覆盖'未定义! –