嗨@Luu,根據提供的信息,它是不可能確定你的問題的原因。
然而,至關重要的是要注意,優化ZORDER操作現在使用希爾伯特空間曲線在默認情況下,提供更好的聚類特征比z值更高的維度。
三角洲表使用優化ZORDER許多列,希爾伯特曲線可以加快閱讀查詢跳過比z值數據。
為了進一步調查這一問題,你可以試試以下幾點:
•檢查表是一個δ表,如果有很多列。優化ZORDER與三角洲表與許多列效果最好。
•檢查表在運行優化ZORDER命令之前被分割。與分區表優化ZORDER效果最好。
•檢查是否有足夠的數據來優化。如果表小,優化ZORDER可能沒有多大影響。
•檢查優化ZORDER命令的輸出是否有任何錯誤或警告。
如果你嚐試以上步驟後仍麵臨問題,請提供更多的信息關於這個問題和優化ZORDER你跟著跑的操作命令。
謝謝你的快速回複Kaniz。我可以提供更多的信息到你的問題。
觀察指標,似乎所有的文件都跳過。它說partitionsOptimized = 2137。然而,這是我們第一次與ZOrder使用優化。因此,我期望的優化ZOrder命令將進程文件。任何進一步的想法?
提前謝謝你
嗨@Luu,
優化使用z值的命令,不處理任何文件,所有文件都跳過。
•數據不可能的原因是,z值的有效性和文件大小。
•數據啟用跳過三角洲的表,查詢優化器可以跳過不必要的文件基於編寫期間收集的統計數據。
•如果表中的數據已經跳過組織良好的z值並不是改善數據,文件可能會被忽略。
•z值列高基數是最有效的,常用的查詢謂詞。
•如果所選列z值不符合這些標準,z值可能不顯著影響查詢性能,導致跳過文件。
•表有很多小文件(2137),共計18 gb。
•如果已經優化文件大小和文件不足夠小,受益於壓實,優化命令可能沒有效果。
•調查和改進優化的有效性與ZOrder命令,考慮以下:delta.dataSkippingNumIndexedCols
如果需要的話。delta.autoCompact
和delta.optimizeWrite
設置。
•來源:
從上麵的指標中,我們可以看到totalConsideredFiles 2137和totalFilesSkipped是2137。所以,在此優化所有文件都跳過。
你能試著修改這個標誌——嗎spark.databricks.delta.optimize.preserveInsertionOrder假嗎?
在集群級別修改它。去高級設置的集群和火花選項。
spark.databricks.delta.optimize.preserveInsertionOrder假
筆記本級別使用下麵的代碼
spark.conf.set (“spark.databricks.delta.optimize.preserveInsertionOrder”,假)