亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在 Pyspark 中更改 fileoutputcommitter 算法的版本

如何在 Pyspark 中更改 fileoutputcommitter 算法的版本

拉風的咖菲貓 2022-10-18 16:10:11
默認情況下,spark(2.4.4)使用 MapReduce.fileoutputcommitter.algorithm.version 1。我正在嘗試將其更改為版本 2。 spark-UI 并sparkCtx._conf.getAll()顯示版本 2,但 pyspark 仍然使用版本 1(臨時文件夾)將數據寫入 S3正在創建)。我已經嘗試過這些東西。spark.hadoop.mapreduce.fileoutputcommitter.algorithm.version   2在 spark-defaults.conf 中設置為 spark 會話定義 config("spark.hadoop.mapreduce.fileoutputcommitter.algorithm.version","2")。df.write 中的設置選項如下: df.write.option("mapreduce.fileoutputcommitter.algorithm.version", "2")
查看完整描述

1 回答

?
慕田峪9158850

TA貢獻1794條經驗 獲得超8個贊

但 pyspark 仍然使用版本 1 將數據寫入 S3(正在創建臨時文件夾)。

首先,v1 和 v2 算法都使用臨時文件。如MAPREDUCE-6336中所述

算法版本 2 更改了 commitTask、recoverTask 和 commitJob 的行為。

  1. commitTask 將 $joboutput/_temporary/$appAttemptID/_temporary/$taskAttemptID/ 中的所有文件重命名為 $joboutput/

  2. recoverTask 嚴格來說是一個 nop,但是對于從版本 1 升級到版本 2 的情況,它會檢查 $joboutput/_temporary/($appAttemptID - 1)/$taskID/ 中是否有任何文件并將它們重命名為 $joboutput/

  3. commitJob 刪除 $joboutput/_temporary 并寫入 $joboutput/_SUCCESS

因此,請確保您實際看到的是與 v1 而不是 v2 對應的更改。

此外spark.hadoop,選項適用于上下文而不是特定的寫入,因此您的第三次嘗試根本不起作用。

其余的應該是等價的(第二個,如果之前設置過SparkContext)。


查看完整回答
反對 回復 2022-10-18
  • 1 回答
  • 0 關注
  • 169 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號