共用方式為


Bloom 篩選索引

注意

使用已啟用 Photon 的計算和 Databricks Runtime 12.2 或更新版本時,預測性 I/O 優於布魯姆篩選條件,以取得讀取效能。 請參閱 什麼是預測性 I/O?

在 Databricks Runtime 13.3 和更新版本中,Databricks 建議針對 Delta 數據表配置使用叢集。 請參閱針對差異資料表使用液態叢集 \(英文\)。

Databricks 只有在使用不支持這些功能的計算時,才建議使用 Bloom 篩選。

Bloom 篩選索引是一種具有空間效率的數據結構,可讓所選數據行上的數據略過,特別是針對包含任意文字的欄位。

Bloom 篩選索引的運作方式

Azure Databricks Bloom 篩選索引是由每個數據檔略過索引的數據所組成。 Bloom 篩選索引可用來判斷數據行值明確 不在檔案中 ,或是可能位於 檔案中 。 讀取 Azure Databricks 檔案之前會檢查索引檔案,而且只有在索引指出檔案可能符合數據篩選條件時,才會讀取檔案。

Bloom 篩選支援具有下列輸入資料類型的數據行:byte、、、shortlongfloatdoubleintdatetimestamp、 和 。string Null 不會新增至 Bloom 篩選,因此任何 Null 相關篩選都需要讀取數據檔。 Azure Databricks 支援下列資料源篩選:and、、orinequalsequalsnullsafe。 巢狀數據行不支援 Bloom 篩選條件。

組態和參考

使用下列語法來啟用 Bloom 篩選:

CREATE BLOOMFILTER INDEX
ON TABLE table_name
FOR COLUMNS(column_name OPTIONS (fpp=0.1, numItems=5000))

如需語法詳細數據,請參閱 CREATE BLOOM FILTER INDEXDROP 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}"))

例如:

顯示索引