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

如何優化出口dataframe三角洲文件嗎?

Frankooo
新的貢獻者三世

場景:我有一個dataframe有50億條記錄/行和100 +列。有辦法有效地編寫這個三角洲的格式。我試圖出口,但取消後2小時(寫不完),這個處理時間不是不可接受的業務代表。到目前為止我所做的是出口使用這種語法行。我使用Python順便說一句。

dataframe_name.repartition (50) .write.partitionBy(<可樂>、< colB >) .format .mode(“δ”)(“覆蓋”)。選項(“overwriteSchema”,“真正的”).save (< StoragePathLocation >)

集群配置:

Standard_DS4_V2 - 28 gb Mem 8核

9回複9

Hubert_Dudek1
尊敬的貢獻者三世

需要作為交易數據格式是不確定,也許更好的隻是使用鑲花的文件。

你可以閱讀數據源的dataframes塊並使用append模式。

如果數據是經常更新的我認為你需要考慮結構化流。

Frankooo
新的貢獻者三世

你好@Hubert杜德克謝謝你的輸入。我沒聽過結構化流磚最近才開始工作。我也利用ADF編排筆記本,這會影響這個過程嗎?

Hubert_Dudek1
尊敬的貢獻者三世

是的,流你仍然可以通過Azure數據工廠來運行它。隻是如果你想無限期地流你不能使用進度和需要處理可能的失敗。如果你想設置流完成(超時)一段時間後,你可以設置時間表(例如超時後23.9小時,每天運行)。事實上每個案件都是不同的。

werners1
尊敬的貢獻者三世

這是一次操作或你想寫這50億條記錄定期嗎?

如果是一次操作可以使用優化的三角洲湖寫道:

設置spark.databricks.delta.properties.defaults.autoOptimize.optimizeWrite = true;

設置spark.databricks.delta.properties.defaults.autoOptimize.autoCompact = true;

這樣的分區大小自動處理,可以ommit重新分區(50)。

因為這個再分配將導致大量的打亂。

還要檢查如果你需要overwriteschema選項。我不確定是否有性能影響但任何檢查沒有得到執行。

可以添加新數據追加模式或合並模式(如果更新是必要的)。

如果是例行工作,你必須一遍又一遍地覆蓋數據(或刪除和重新創建),我沒有看到很多附加價值在使用三角洲湖。也許自動分區大小,讀優化。但不知道向下的數據流,這是難以評估。

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

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

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

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

Baidu
map