數據跳躍索引

重要的

DATASKIPPING指數在Databricks Runtime 7.0中被刪除。我們建議您改用Delta表,它提供改進的數據跳過功能

重要的

此文檔已退役,可能無法更新。本內容中提及的產品、服務或技術已不再受支持。看到數據跳躍與z順序索引三角洲湖

描述

除了分區修剪之外,Databricks Runtime還包括另一個功能,即數據跳過索引,它可以避免掃描不相關的數據。它使用文件級統計信息,以便在文件粒度上執行額外的跳過。這適用於hive風格的分區,但並不依賴於它。

數據跳過的有效性取決於數據的特征及其物理布局。由於跳過是在文件粒度上完成的,因此數據在多個文件之間水平分區非常重要。這通常是由於有多個追加作業、(shuffle)分區、桶存儲和/或使用spark.sql.files.maxRecordsPerFile.它在有排序桶的表上工作得最好(df.write.bucketBy(…).sortBy(…).saveAsTable(…)/創建表格...集群通過...排序通過...),或者使用與分區鍵相關的列(例如,名牌-modelNamecompanyID-上漲空間),但當你的數據恰好表現出某種排序/聚類時(例如,orderIDbitcoinValue).

請注意

這個測試版特性有很多重要的特性限製

  • 它是可選擇的:需要在每個表的基礎上手動啟用。

  • 它隻有SQL:沒有DataFrame API。

  • 一旦表被索引,後續的影響插入添加分區操作是沒有保證的在索引被顯式刷新之前都是可見的。

SQL語法

創建索引

創建DATASKIPPING指數表格]db_name.]table_name

在給定表的第一個(即最左邊)上啟用數據跳過N支持的列,其中Nspark.databricks.io.skipping.defaultNumIndexedCols(默認值:32)

partitionBy列總是被索引,並且不計入索引N

為列創建索引

創建DATASKIPPING指數表格]db_name.]table_namecol1…)

在給定表上為指定列列表啟用數據跳過。同上partitionBy列將始終在指定的列之外被索引。

描述指數

描述DATASKIPPING指數擴展]表格]db_name.]table_name

顯示給定表的哪些列被索引,以及所收集的相應類型的文件級統計信息。

如果擴展如果指定了,則顯示第三列“effecveness_score”,它給出了我們期望DataSkipping對相應列上的過濾器有多大好處的近似度量。

刷新全索引

刷新DATASKIPPING指數表格]db_name.]table_name

重新構建整個索引。也就是說,所有表的分區將被重新索引。

刷新分區

刷新DATASKIPPING指數表格]db_name.]table_name分區part_col_name1val1),part_col_name2val2),…)

隻重新索引指定的分區。這個操作通常應該比完全刷新索引快。

指數下降

下降DATASKIPPING指數表格]db_name.]table_name

禁用給定表上的數據跳過並刪除所有索引數據。