你好社區!
我有一個相當奇怪的問題在三角洲合並寫大文件(~ 1 gb)減緩我的管道。這裏有一些背景:
我有一個dataframe帳目更新幾個過去的日期。當前和最後一天包含大量的行(> 95%),其餘分布在舊天(約100個獨特的日期)。我的目標dataframe分區的日期。
我的問題是,當合並操作正在寫文件我最後寫2 - 3文件最大的約會分區,結果2 - 3文件大約1 gb。因此我的整個管道被這些文件的編寫,需要更長的時間比其他的。
我玩所有明顯的配置,如:
delta.tuneFileSizesForRewrites
delta.targetFileSize
delta.merge.enableLowShuffle
一切似乎都被忽略和文件保持在這種規模。
注意:DBR 10.0 / delta.optimizedWrites上運行。啟用設置為真
有什麼我錯過什麼?
提前謝謝你!
表的大小可能是+ 10 tb ?
如果使用自動調諧,三角洲湖使用基於表大小的文件大小:
然而,targetfilesize應該禁用自動調諧……奇怪。
我使用以下設置(創建文件大約256 mb):
火花。sql(“設置spark.databricks.delta.autoCompact.enabled = true”)
火花。sql(“設置spark.databricks.delta.optimizeWrite.enabled = true”)
火花。sql(“設置spark.databricks.delta.merge.enableLowShuffle = true”)
你好,
花了一些時間調查和嚐試@Sandeep Chandran的想法。
我跑了4種不同的配置。我有緩存更新表,每次我向目標表上運行恢複我們的數據合並是相同的。
這是我最大的分區上的文件由每次運行是一個阻塞階段:
1:運行
spark.databricks.delta.tuneFileSizesForRewrites:假
我想它使用文件調表的大小
run2:
spark.databricks.delta.tuneFileSizesForRewrites:假
spark.databricks.delta.optimize.maxFileSize: 268435456
run3:
spark.databricks.delta.tuneFileSizesForRewrites:假
delta.targetFileSize= 268435456 property on target table
run4:
spark.databricks.delta.tuneFileSizesForRewrites:真
作為額外信息記錄每個分區,就在這裏。如你所見我dataframe非常不平衡的。