2017-03-18 65 views
3

我試圖使用新的火花2.1 CSV選項星火CSV 2.1文件名

df.select(myColumns: _*).write 
        .mode(SaveMode.Overwrite) 
        .option("header", "true") 
        .option("codec", "org.apache.hadoop.io.compress.GzipCodec") 
        .csv(absolutePath) 

一切工作正常,以數據幀保存到CSV,我不介意haivng部分-000XX前綴 但現在看來像一些UUID加入作爲後綴

i.e 
part-00032-10309cf5-a373-4233-8b28-9e10ed279d2b.csv.gz ==> part-00032.csv.gz 

任何人都知道我怎麼可以刪除此文件內線只有用部分000XX convension留

感謝

+0

選中此http://stackoverflow.com/questions/41990086/specifying-the-filename-when- save-a-dataframe-as-a-csv – Dhanesh

+1

感謝@Dhanesh,但即時通訊使用S3,因此在文件持久化後重命名並不那麼簡單(考慮文件可能> 5GB)。部分000XX很好。我不太喜歡附加到後綴 –

+0

的新UUID號碼,只是看到了兩個選項 - 要麼將s3文件移動到具有您想要的名稱的新文件,要麼將其保存到本地FS或HDFS,重命名並將其移至S3 。 http://stackoverflow.com/questions/21184720/how-to-rename-files-and-folder-in-amazon-s3 – Dhanesh

回答

3

您可以通過修改配置選項「spark.sql.sources.writeJobUUID」刪除UUID:

https://github.com/apache/spark/commit/0818fdec3733ec5c0a9caa48a9c0f2cd25f84d13#diff-c69b9e667e93b7e4693812cc72abb65fR75

不幸的是這種解決方案將不能完全反映舊saveAsTextFile風格(即part-00000),但可以使輸出文件名更加健全,如part-00000-output.csv.gz,其中「output」是您傳遞給spark.sql.sources.writeJobUUID的值。其中「 - 」會自動附加

SPARK-8406是相關星火問題,這裏的實際拉動請求:https://github.com/apache/spark/pull/6864