Bloom 濾波器索引
注意
在使用已啟用 Photon 的計算以及 Databricks Runtime 12.2 或更高版本時,預測性 I/O 的讀取效能優於布隆過濾器。 請參閱 什麼是預測性 I/O?。
在 Databricks Runtime 13.3 和更新版本中,Databricks 建議針對 Delta 數據表配置使用叢集。 請參閱 使用 Delta 表的液體分群。
Databricks 只有在使用不支持這些功能的計算時,才建議使用 Bloom 篩選。
Bloom 篩選器索引是一種具有節省空間的數據結構,能讓選定的資料欄上的數據略過,特別是針對包含任意文本的欄位。
Bloom 篩選索引的運作方式
Azure Databricks Bloom 濾波器索引由每個數據檔案的略過索引組成。 Bloom 篩選索引可用來確定欄位值已明確 不在檔案 中,或者 可能存在於檔案 中。 讀取 Azure Databricks 檔案之前會檢查索引檔案,而且只有在索引指出檔案可能符合數據篩選條件時,才會讀取檔案。
Bloom 篩選支援具有下列輸入數據類型的數據行:byte
、short
、int
、long
、float
、double
、date
、timestamp
和 string
。 Null 不會新增至 Bloom 篩選,因此任何 Null 相關篩選都需要讀取數據檔。 Azure Databricks 支援下列數據源篩選:and
、or
、in
、equals
和 equalsnullsafe
。 巢狀欄位不支援 Bloom 過濾器。
設定與參考
使用下列語法來啟用 Bloom 篩選:
CREATE BLOOMFILTER INDEX
ON TABLE table_name
FOR COLUMNS(column_name OPTIONS (fpp=0.1, numItems=5000))
如需語法詳細資料,請參閱 CREATE BLOOM FILTER INDEX 和 DROP BLOOM FILTER INDEX。
若要停用 Bloom 篩選作業,請將會話層級 spark.databricks.io.skipping.bloomFilter.enabled
組態設定為 false
。
顯示 Bloom 篩選索引清單
若要顯示索引清單,請執行:
spark.table("<table-with-indexes>").schema.foreach(field => println(s"${field.name}: metadata=${field.metadata}"))
例如: