2015-12-24 148 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

生成錯誤:名稱'覆蓋'未定義! –