メインコンテンツまでスキップ

ブルーム フィルター インデックス

注記

Photon対応コンピュートおよび Databricks Runtime 12.2以降を使用する場合、予測I/Oはブルームフィルターよりも読み取りパフォーマンスが優れています。 「予測 I/O とは」を参照してください。

Databricks Runtime 13.3 以降では、Databricks では Delta テーブル レイアウトにクラスタリングを使用することをお勧めします。 「Deltaテーブルにリキッドクラスタリングを使用する」を参照してください。

Databricks 、これらの機能をサポートしていないコンピュートを使用する場合にのみ、ブルームフィルターを使用することをお勧めします。

ブルーム フィルター インデックスは、スペース効率の高いデータ構造であり、特に任意のテキストを含むフィールドに対して、選択した列でデータをスキップできます。

ブルーム フィルター インデックスのしくみ

Databricks ブルーム フィルター インデックスは、各データ ファイルのデータ スキップ インデックスで構成されます。 ブルーム フィルター インデックスを使用すると、列の値がファイルに明確に 存在しない か、またはファイル 内にある可能性がある かを判断できます。 ファイルを読み取る前に、Databricks はインデックス ファイルをチェックし、ファイルがデータ フィルターに一致する可能性があることをインデックスが示している場合にのみ、ファイルが読み取られます。

ブルームフィルターは、入力データ型 ( byteshortintlongfloatdoubledatetimestampstringの各入力データ型の列をサポートします。 Null は Bloom フィルターに追加されないため、null 関連のフィルターではデータ ファイルを読み取る必要があります。 Databricks は、 andorinequalsequalsnullsafeのデータソース フィルターをサポートしています。 ブルーム フィルターは、入れ子になった列ではサポートされていません。

構成と参照

次の構文を使用して、ブルームフィルターを有効にします。

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

構文の詳細については、 CREATE BLOOM FILTER INDEXDROP BLOOM FILTER INDEX を参照してください。

ブルームフィルター操作を無効にするには、セッションレベル spark.databricks.io.skipping.bloomFilter.enabled 設定を falseに設定します。

ブルームフィルターインデックスのリストを表示します

インデックスのリストを表示するには、次のコマンドを実行します。

Scala
spark.table("<table-with-indexes>").schema.foreach(field => println(s"${field.name}: metadata=${field.metadata}"))

例えば:

インデックスを表示