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
, equals
und 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: