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

Photon 対応のコンピュートと Databricks Runtime 12.2 以降を使用すると、予測 I/O は読み取りパフォーマンスでブルーム フィルターを上回ります。 予測 I/O とはを参照してください。

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

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

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

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

Databricks ブルーム フィルター インデックスは、各データ ファイルのデータ スキッピング インデックスで構成されます。 ブルーム フィルター インデックスを使用して、列の値がファイルに 完全に含まれていない か、またはおそらくファイル にあるかを判断できます。 ファイルを読み取る前に、Databricks はインデックス ファイルをチェックし、ファイルがデータ フィルターに一致する可能性があることがインデックスによって示されている場合にのみ、ファイルが読み取られます。

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

構成と参照

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

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」を参照してください。

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

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

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

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

例:

インデックスの表示