Freigeben über


Bloom-Filterindizes

Hinweis

Bei Verwendung von Photon-fähigem Compute und Databricks Runtime 12.2 oder höher übertrifft prädiktive E/A bei der Leseleistung Bloomfilter. 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. Siehe Verwenden von Flüssigclustering für Tabellen.

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

Ein Bloom-Filterindex ist eine raumeffiziente Datenstruktur, die das Überspringen von Daten in ausgewählten Spalten ermöglicht, insbesondere für Felder, die beliebigen Text enthalten.

Funktionsweise von Bloom-Filterindizes

Azure Databricks Bloom-Filterindizes bestehen aus einem Datensprungindex für jede Datendatei. Der Bloom-Filterindex kann verwendet werden, um zu bestimmen, dass ein Spaltenwert definitiv nicht in der Datei enthalten ist oder dass er wahrscheinlich in der Datei enthalten ist. Bevor eine Datei gelesen wird, überprüft Azure Databricks die Indexdatei, und die Datei wird nur dann gelesen, wenn der Index anzeigt, dass die Datei möglicherweise mit einem Datenfilter übereinstimmt.

Bloom-Filter unterstützen Spalten mit den folgenden Eingabedatentypen: byte, , short, int, long, floatdoubledate, , timestampund string. Nullen werden dem Bloom-Filter nicht hinzugefügt, sodass ein nullbezogener Filter das Lesen der Datendatei erfordert. Azure Databricks unterstützt die folgenden Datenquellenfilter: and, , or, in, und equalsequalsnullsafe. 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-Filtervorgänge zu deaktivieren, legen Sie die Konfiguration auf Sitzungsebene spark.databricks.io.skipping.bloomFilter.enabled auf false.

Liste der Bloom-Filterindizes anzeigen

Führen Sie Folgendes aus, um die Liste der Indizes anzuzeigen:

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

Beispiel:

Anzeigen von Indizes