注
Photon 対応コンピューティングと Databricks Runtime 12.2 以降を使用する場合、予測入力/出力は読み取りパフォーマンスではブルームフィルターを上回ります。 「予測 I/O とは」を参照してください。
Databricks Runtime 13.3 以上での Databricks では、Delta テーブル レイアウトにクラスタリングを使用することを推奨しています。 表に液体クラスタリングを使用するを参照してください。
Databricks では、それらの機能をサポートしていないコンピューティングを使用する場合にのみ、ブルーム フィルターを使用することをお勧めします。
ブルーム フィルター インデックスは、選択した列 (特に任意のテキストを含むフィールド) でデータをスキップできるようにする、スペース効率の高いデータ構造です。
ブルーム フィルターのインデックスのしくみ
Azure Databricks のブルーム フィルターのインデックスは、各データ ファイルのデータ スキップ インデックスで構成されています。 ブルーム フィルター インデックスを使用すると、列の値がファイル に明確に されていないか、ファイル 可能性が高いと判断できます。 Azure Databricks は、ファイルを読み取る前にインデックス ファイルをチェックします。そして、ファイルがデータ フィルターと一致する可能性があることをインデックスが示している場合にのみ、ファイルが読み取られます。
ブルーム フィルターでは、byte
、short
、int
、long
、float
、double
、date
、timestamp
、string
の入力データ型の列がサポートされます。 null 値はブルーム フィルターに追加されないので、null 値関連のフィルターではデータ ファイルを読み取る必要があります。 Azure Databricks では、and
、or
、in
、equals
、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を参照してください。
Bloom フィルター操作を無効にするには、セッション レベル spark.databricks.io.skipping.bloomFilter.enabled
構成を false
に設定します。
ブルーム フィルター インデックスの一覧を表示する
インデックスの一覧を表示するには、次のコマンドを実行します。
spark.table("<table-with-indexes>").schema.foreach(field => println(s"${field.name}: metadata=${field.metadata}"))
次に例を示します。