數據跳躍索引
重要的
DATASKIPPING指數
在Databricks Runtime 7.0中被刪除。我們建議您改用Delta表,它提供改進的數據跳過功能.
重要的
此文檔已退役,可能無法更新。本內容中提及的產品、服務或技術已不再受支持。看到數據跳躍與z順序索引三角洲湖.
描述
除了分區修剪之外,Databricks Runtime還包括另一個功能,即數據跳過索引,它可以避免掃描不相關的數據。它使用文件級統計信息,以便在文件粒度上執行額外的跳過。這適用於hive風格的分區,但並不依賴於它。
數據跳過的有效性取決於數據的特征及其物理布局。由於跳過是在文件粒度上完成的,因此數據在多個文件之間水平分區非常重要。這通常是由於有多個追加作業、(shuffle)分區、桶存儲和/或使用spark.sql.files.maxRecordsPerFile
.它在有排序桶的表上工作得最好(df.write.bucketBy(…).sortBy(…).saveAsTable(…)
/創建表格...集群通過...排序通過...
),或者使用與分區鍵相關的列(例如,名牌-modelName
,companyID-上漲空間
),但當你的數據恰好表現出某種排序/聚類時(例如,orderID
,bitcoinValue
).
請注意
這個測試版特性有很多重要的特性限製:
它是可選擇的:需要在每個表的基礎上手動啟用。
它隻有SQL:沒有DataFrame API。
一旦表被索引,後續的影響
插入
或添加分區
操作是沒有保證的在索引被顯式刷新之前都是可見的。
SQL語法
創建索引
創建DATASKIPPING指數在[表格][db_name.]table_name
在給定表的第一個(即最左邊)上啟用數據跳過N支持的列,其中N由spark.databricks.io.skipping.defaultNumIndexedCols
(默認值:32)
partitionBy
列總是被索引,並且不計入索引N.
為列創建索引
創建DATASKIPPING指數在[表格][db_name.]table_name為列(col1,…)
在給定表上為指定列列表啟用數據跳過。同上partitionBy
列將始終在指定的列之外被索引。
描述指數
描述DATASKIPPING指數[擴展]在[表格][db_name.]table_name
顯示給定表的哪些列被索引,以及所收集的相應類型的文件級統計信息。
如果擴展
如果指定了,則顯示第三列“effecveness_score”,它給出了我們期望DataSkipping對相應列上的過濾器有多大好處的近似度量。