嗨Kaniz,
有很多技術來提高查詢性能。
一些表設計,可以認為提高查詢性能如下:
我們已經看到有大量的小文件性能問題如得不到一個好的輸入分割或長時間列表文件。我們可以減少很多小文件通過壓實
有兩個選項,壓實,使汽車優化連同你的數據加載和運行手動優化工作。磚建議有或多或少地統一為一個分區內的數據文件大小
運行優化生成大文件後結合小文件——壓實後最大文件大小由spark.databricks.delta.optimize.maxFileSize控製。默認- 1 GB
自動優化是一個可選的特性,自動緊湊的小文件在個人寫一個三角洲表。自動優化增加延遲開銷寫操作,但加速讀取操作
2。數據不
火花跳過有助於消除全表掃描的數據工作,降低謂詞和跳過數據文件,不包含謂詞。文件修剪發生作為metadata-operation掃描運營商三角洲湖的一部分。這可以實現,因為三角洲湖自動收集關於數據文件的元數據管理。
數據時自動跳過信息收集到三角洲表中寫入數據。三角洲湖上磚利用這些信息(最大和最小值)在查詢時提供更快的查詢。你不需要配置數據跳過;這個功能被激活時適用。然而,其有效性取決於數據的布局。
同時,收集統計數據列是一項昂貴的操作,您可能需要配置三角洲。dataSkippingNumIndexedCols添加所有列的統計數據也需要收集和避免收集長字符串的數據需要時間
你可以分區和zorder表除了默認數據自動跳過了磚,以減少文件掃描的總數。這些類型的數據也跳過機製。
動態文件修剪是一種類型的數據不允許文件修剪與明確的文字在過濾條件和不明確的謂詞,被指定為一個連接的一部分,通常是發現在大多數數據倉庫查詢。
動態文件修剪對性能的影響往往是相關的集群數據所以考慮使用z值最大化效益。
請在上麵找到更多的細節和建議在以下鏈接
Dataskipping -https://docs.m.eheci.com/delta/data-skipping.html
動態文件修剪-https://docs.m.eheci.com/optimizations/dynamic-file-pruning.html
//m.eheci.com/blog/2020/04/30/faster-sql-queries-on-delta-lake-with-dynamic-file-prunin..。
自動優化,https://docs.m.eheci.com/optimizations/auto-optimize.html
優化-https://docs.m.eheci.com/sql/language-manual/delta-optimize.html
請找到一些查詢級別性能調優:
考慮廣播加入提示,如果其中一個表中加入小,適合在內存中。
確保表是最新的統計數據通過運行分析表計算統計的ref -https://docs.m.eheci.com/sql/language-manual/sql-ref-syntax-aux-analyze-table.html
越來越多的任務在一個階段減少泄漏,spark.sql.files——較低的運行輸入分割大小。maxPartitionBytes以便有更多數量的輸入級任務(並行)和增加洗牌階段並行性(參考:https://spark.apache.org/docs/latest/sql-performance-tuning.html)
希望這些指針幫助!