取消
顯示的結果
而不是尋找
你的意思是:

S3寫信給桶-最佳性能技巧

720677年
新的貢獻者三世

我寫大dataframes s3 bucket的增量。

df.write \

.format \(“δ”)

.mode \(“追加”)

.partitionBy partitionColumns \

.option (“mergeSchema”,“真正的”)\

.save (target_path)

什麼是最好的建議來提高性能的編寫需要今天幾分鍾寫完s3。

使用最新版本的集群和火花3.4.0,python。

  1. 火花配置參數可以提高寫什麼?我應該試著“spark.hadoop.fs.s3a.bucket.all.committer.magic.enabled”?如何?
  2. 我應該試著像“spark.hadoop.fs.s3a.impl.disable各種參數。緩存”?
  3. 由一列dataframe隻是分區。我應該更多的並行分區的寫嗎?或者它不會影響?
  4. 還有什麼我可以檢查嗎?

2回答2

匿名
不適用

@Pablo (Ariel):

有幾種方法可以提高寫作的性能數據,S3使用火花。這裏有一些提示和建議:

  1. 提高寫緩衝區的大小:默認情況下,火花寫數據1 MB的批次。你可以增加寫入緩衝區的大小減少了S3請求的數量和提高性能。你可以設置使用配置參數spark.databricks.delta.logFileCommitBufferSize緩衝區的大小。
  2. 使用更快的S3端點:如果您正在使用S3 bucket比磚工作區在不同的地區,您可以使用更快的端點來提高寫性能。你可以設置fs.s3a。端點配置參數的URL端點。
  3. 使用S3Guard: S3Guard是Hadoop的特性,它提供了一個一致的視圖的S3數據即使多個作家寫相同的桶。您可以啟用S3Guard通過設置fs.s3a.metadatastore。impl org.apache.hadoop.fs.s3a.s3guard.NullMetadataStore配置參數
  4. 使用實例存儲:如果你的磚集群實例存儲,您可以使用它來寫數據到本地磁盤之前將它複製到S3。這可以提高性能通過減少網絡流量。你可以設置spark.databricks.delta.logStore。配置參數對當地
  5. 並行化寫:分區DataFrame超過一列可以並行化寫作和提高性能。然而,分區的數量不應超過可用內核的數量在你的集群。你可以設置分區的數量使用重新分區或合並方法。
  6. 優化你的數據:如果您的數據有很多小文件,您可以使用spark.sql.files。maxRecordsPerFile配置參數來控製輸出文件的大小。
  7. 優化存儲:您可以優化您的數據的存儲格式,提高寫性能。例如,使用柱狀存儲格式像拚花可以減少需要寫入的數據量S3。

關於你提到的具體配置參數:

  • spark.hadoop.fs.s3a.bucket.all.committer.magic.enabled:這個參數用於啟用所有S3 bucket的神奇的提交者。神奇的提交者可以提高寫性能通過減少S3請求的數量在一個寫操作。然而,這個功能隻能用於某些文件係統和可能不兼容三角洲湖。
  • spark.hadoop.fs.s3a.impl.disable。緩存:這個參數用於禁用S3A客戶端緩存。禁用緩存可以提高寫性能通過減少S3A客戶機使用的內存的數量。然而,這也可以發出的請求數量增加到S3。

總體來說,建議嚐試不同的配置參數和設置為你找到最好的組合特定的用例。

720677年
新的貢獻者三世

謝謝你的回答,我將開始檢查更改。

我找不到磚logFileCommitBufferSize參數配置。

你能給我一個鏈接嗎?

什麼應該值為例:

spark.databricks.delta.logFileCommitBufferSize 50 mb

spark.databricks.delta.logFileCommitBufferSize 50000

嗎?

謝謝你!

歡迎來到磚社區:讓學習、網絡和一起慶祝

加入我們的快速增長的數據專業人員和專家的80 k +社區成員,準備發現,幫助和合作而做出有意義的聯係。

點擊在這裏注冊今天,加入!

參與令人興奮的技術討論,加入一個組與你的同事和滿足我們的成員。

Baidu
map