簡體   English   中英

使用spark根據文件名轉換后覆蓋到相同的分區文件

[英]Overwrite in to same partition files after transformation based on the filename using spark

您好我在 S3 存儲桶 MyBucket/object/file 1.csv、文件 2.csv、文件 3.csv、

我已將此數據加載到單個數據幀中,需要根據列進行一些轉換。然后我想寫入轉換列值,現在我想將文件覆蓋回相同的 file1.csv、file2.csv、file3.csv。 當我給出覆蓋命令時,它會在同一文件夾中創建另一個文件並加載值

如何使用 python 和 spark 或 scala 編寫函數或代碼

好吧,我不確定我的答案是否是最好的,但我希望是。
基本上為了將輸出寫入文件,Spark 使用 hadoop 配置,即mapreduce.output.basename
默認值應該類似於 part-00000。
您可以調整此配置,但不能與您的文件名約定完全相同。
因此,您必須編寫並重命名為您的文件名約定。
所以手續很簡單。

  1. 將文件寫入路徑。
  2. 將輸出文件重命名為原始名稱(可以刪除舊文件並重命名)

每當您在 spark 中保存文件時,它都會創建目錄,然后創建部分文件。

您可以使用 coalesce(1) 將部分文件從多個文件限制為 1 個,但您無法控制目錄創建。

df2.coalesce(1).write.mode("覆蓋").csv("/dir/dir2/Sample2.csv")

它將創建一個目錄,即 Sample2.csv,並將創建一個零件文件。

我希望它消除了你的疑問。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM