Bloom-Filterindizes

Hinweis

Wenn Sie Compute mit Photon-Unterstützung und Databricks Runtime 12.2 oder höher verwenden, übertrifft Predictive I/O Bloom-Filter für die Leseleistung. Siehe Was ist Predictive I/O?.

In Databricks Runtime 13.3 und höher empfiehlt Databricks die Verwendung von Clustering für das Delta-Tabellenlayout. Weitere Informationen finden Sie unter Verwenden von Liquid Clustering für Delta-Tabellen.

Databricks empfiehlt nur die Verwendung von Bloom-Filtern bei Verwendung von Computevorgängen, die diese Features nicht unterstützen.

Ein Bloomfilter-Index ist eine platzsparende Datenstruktur, die das Überspringen von Daten in ausgewählten Spalten ermöglicht, insbesondere bei Feldern mit beliebigem Text.

Funktionsweise von Bloom-Filterindizes

Bloom-Filterindizes von Azure Databricks bestehen aus einem Index mit Überspringen von Daten für jede Datendatei. Der Bloom-Filterindex kann verwendet werden, um zu bestimmen, dass ein Spaltenwert definitiv nicht in der Datei ist oder dass er wahrscheinlich in der Datei ist. Vor dem Lesen einer Datei überprüft Azure Databricks die Indexdatei, und die Datei wird nur gelesen, wenn der Index angibt, dass die Datei mit einem Datenfilter übereinstimmt.

Bloom-Filter unterstützen Spalten mit den folgenden Eingabedatentypen: byte, short, int, long, float, double, date, timestamp und string. Nullen werden dem Bloom-Filter nicht hinzugefügt, sodass für jeden NULL-bezogenen Filter das Lesen der Datendatei erforderlich ist. Azure Databricks unterstützt die folgenden Datenquellenfilter: and, or, in, equalsund equalsnullsafe. Bloom-Filter werden für geschachtelte Spalten nicht unterstützt.

Konfiguration und Referenz

Verwenden Sie die folgende Syntax, um einen Bloom-Filter zu aktivieren:

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

Ausführliche Informationen zur Syntax finden Sie unter CREATE BLOOM FILTER INDEX und DROP BLOOM FILTER INDEX.

Um Bloom-Filter zu deaktivieren, legen Sie die Konfiguration spark.databricks.io.skipping.bloomFilter.enabled auf Sitzungsebene auf false fest.

Anzeigen der Liste der Bloom-Filterindizes

Um die Liste der Indizes anzuzeigen, führen Sie Folgendes aus:

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

Beispiele:

Anzeigen von Indizes