添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
俊逸的青蛙  ·  getFileInformationByHa ...·  1 年前    · 
冷冷的单杠  ·  Django Restful ...·  1 年前    · 

當您將資料寫入 Delta 資料表時,會自動收集略過資料的資訊。 Azure Databricks 上的 Delta Lake 利用這項資訊 (查詢時) 最小值和最大值,以提供更快的查詢。 您不需要設定略過資料;每當適用時,就會啟動此功能。 不過,其有效性取決於您的資料配置。 為了獲得最佳結果,請套用 Z-Ordering

在 Databricks Runtime 13.2 和更新版本中,Databricks 建議使用叢集進行 Delta 資料表配置。 叢集與 Z 排序不相容。 請參閱 使用差異資料表的 liquid 叢集

根據預設,Azure Databricks 上的 Delta Lake 會收集資料表架構中所定義前 32 個數據行的統計資料。 您可以使用 table 屬性 delta.dataSkippingNumIndexedCols 來變更此值。 新增更多資料行來收集統計資料,會在您寫入檔案時增加更多額外負荷。

收集長字串的統計資料是昂貴的作業。 若要避免收集長字串的統計資料,您可以設定 table 屬性 delta.dataSkippingNumIndexedCols ,以避免包含長字串的資料行,或將包含長字串的資料行移至大於 delta.dataSkippingNumIndexedCols 使用 ALTER TABLE ALTER COLUMN 的資料行。 請參閱 ALTER TABLE

為了收集統計資料,巢狀資料行中的每個欄位都會被視為個別資料行。

什麼是 Z 排序?

Z 排序是一種在相同檔案集中共置相關資訊 的技術 。 Delta Lake 會自動在 Azure Databricks 資料略過演算法上使用此共置。 此行為可大幅減少 Azure Databricks 上 Delta Lake 需要讀取的資料量。 若要使用 Z 順序資料,您可以在 子句中指定要排序的資料行 ZORDER BY

OPTIMIZE events
WHERE date >= current_timestamp() - INTERVAL 1 day
ZORDER BY (eventType)

如果您預期查詢述詞中經常使用資料行,如果該資料行具有高基數 (,則) 大量的相異值,請使用 ZORDER BY

您可以將 的 ZORDER BY 多個資料行指定為逗號分隔清單。 不過,位置的有效性會隨著每個額外資料行而下降。 沒有收集統計資料之資料行的 Z 順序會無效,而且浪費資源。 這是因為略過資料需要資料行本機統計資料,例如 min、max 和 count。 您可以藉由重新排序架構中的資料行來設定特定資料行的統計資料收集,也可以增加要收集統計資料的資料行數目。

  • Z 排序 不具等冪性 ,但目標是累加作業。 Z 排序所需的時間不保證會減少多個執行。 不過,如果沒有新資料新增至只有 Z 排序的資料分割,該分割區的另一個 Z 順序將不會有任何作用。

  • Z 排序的目標是針對 Tuple 數目產生平均平衡的資料檔案,但不一定是磁片上的資料大小。 這兩個量值最常相互關聯,但在某些情況下不是這種情況,導致優化工作時間扭曲。

    例如,如果您 ZORDER BY日期和最近的記錄全都是較寬的 (,例如陣列或字串值比過去更多的陣列或字串) 值,則預期 OPTIMIZE 作業的工作持續時間會扭曲,以及產生的檔案大小。 不過,這只是命令本身的問題 OPTIMIZE ;它不應該對後續查詢產生任何負面影響。

  •