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

OPTIMZE ZOrder不產生影響

災區
新的貢獻者二世

你好,

最近我麵臨著一個奇怪的行為後OPTIMZE ZOrder命令。一個大表(400緒。行)我執行優化命令ZOrder 3列。然而,似乎命令沒有任何影響和命令不做任何事。看著桌子上曆史,我還不能找到一個新的優化操作。曆史上我可以看到,表優化沒有ZOrder幾個月前。但我希望,優化與ZOrder會引發了一些文件優化。你有什麼主意嗎?我忽略了什麼嗎?

提前謝謝。

7回複7

Kaniz
社區經理
社區經理

@Luu,根據提供的信息,它是不可能確定你的問題的原因。

然而,至關重要的是要注意,優化ZORDER操作現在使用希爾伯特空間曲線在默認情況下,提供更好的聚類特征比z值更高的維度。

三角洲表使用優化ZORDER許多列,希爾伯特曲線可以加快閱讀查詢跳過比z值數據。

為了進一步調查這一問題,你可以試試以下幾點:
•檢查表是一個δ表,如果有很多列。優化ZORDER與三角洲表與許多列效果最好。
•檢查表在運行優化ZORDER命令之前被分割。與分區表優化ZORDER效果最好。
•檢查是否有足夠的數據來優化。如果表小,優化ZORDER可能沒有多大影響。
•檢查優化ZORDER命令的輸出是否有任何錯誤或警告。

如果你嚐試以上步驟後仍麵臨問題,請提供更多的信息關於這個問題和優化ZORDER你跟著跑的操作命令。

災區
新的貢獻者二世

謝謝你的快速回複Kaniz。我可以提供更多的信息到你的問題。

  • 我考慮的表是δ表與許多列(194列)
  • 分區表的兩列
  • 表很大(約400緒行,2137文件,18 gb的數據)
  • 優化ZOrder的輸出是一個表與路徑和指標:
  • 看到的:
    對象
    numFilesAdded: 0
    numFilesRemoved: 0
    filesAdded:
    分鍾:零
    馬克斯:零
    avg: 0
    totalFiles: 0
    totalSize: 0
    filesRemoved:
    分鍾:零
    馬克斯:零
    avg: 0
    totalFiles: 0
    totalSize: 0
    partitionsOptimized: 2137
    zOrderStats:零
    numBatches: 0
    totalConsideredFiles: 2137
    totalFilesSkipped: 2137
    preserveInsertionOrder:真
    numFilesSkippedToReduceWriteAmplification: 0
    numBytesSkippedToReduceWriteAmplification: 0
    startTimeMs: 1691419395184
    endTimeMs: 1691419396139
    totalClusterParallelism: 8
    totalScheduledTasks: 0
    autoCompactParallelismStats:零
    deletionVectorStats:
    numDeletionVectorsRemoved: 0
    numDeletionVectorRowsRemoved: 0
    numTableColumns: 194
    numTableColumnsWithStats: 32
    totalTaskExecutionTimeMs: 0
    skippedArchivedFiles: 0
    clusteringMetrics:零

觀察指標,似乎所有的文件都跳過。它說partitionsOptimized = 2137。然而,這是我們第一次與ZOrder使用優化。因此,我期望的優化ZOrder命令將進程文件。任何進一步的想法?

提前謝謝你

Kaniz
社區經理
社區經理

@Luu,

優化使用z值的命令,不處理任何文件,所有文件都跳過。
•數據不可能的原因是,z值的有效性和文件大小。
•數據啟用跳過三角洲的表,查詢優化器可以跳過不必要的文件基於編寫期間收集的統計數據。
•如果表中的數據已經跳過組織良好的z值並不是改善數據,文件可能會被忽略。
•z值列高基數是最有效的,常用的查詢謂詞。
•如果所選列z值不符合這些標準,z值可能不顯著影響查詢性能,導致跳過文件。
•表有很多小文件(2137),共計18 gb。
•如果已經優化文件大小和文件不足夠小,受益於壓實,優化命令可能沒有效果。


調查和改進優化的有效性與ZOrder命令,考慮以下:

——驗證z值列:檢查所選列基數高,通常用於查詢謂詞。如果需要選擇不同的列。
-審查數據跳過:確保正確配置和寫作期間收集的統計數據的準確性。調整的價值delta.dataSkippingNumIndexedCols如果需要的話。
-優化文件大小:調整目標文件大小或使用基於表的大小自動配置delta.autoCompactdelta.optimizeWrite設置。


來源:
(文檔:data-skipping) (https://docs.m.eheci.com/delta/data-skipping.html)
(文檔:優化)(https://docs.m.eheci.com/delta/optimize.html)
(文檔:最佳實踐)(https://docs.m.eheci.com/lakehouse-architecture/performance-efficiency/best-practices.html)

Tharun-Kumar
尊敬的貢獻者
尊敬的貢獻者

@Luu

從上麵的指標中,我們可以看到totalConsideredFiles 2137和totalFilesSkipped是2137。所以,在此優化所有文件都跳過。

你能試著修改這個標誌——嗎spark.databricks.delta.optimize.preserveInsertionOrder假嗎?

在集群級別修改它。去高級設置的集群和火花選項。
spark.databricks.delta.optimize.preserveInsertionOrder假

筆記本級別使用下麵的代碼
spark.conf.set (“spark.databricks.delta.optimize.preserveInsertionOrder”,假)

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

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

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

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

Baidu
map