Bloom-filterindex
Not
När du använder beräkning med Photon-aktivering och Databricks Runtime 12.2 eller senare överträffar prediktiv I/O bloomfilter för läsprestanda. Se även Vad är förutsägande I/O?.
I Databricks Runtime 13.3 och senare rekommenderar Databricks att du använder klustring för Delta-tabelllayout. Se Använd flytande klustring för Delta-tabeller.
Databricks rekommenderar bara att du använder Bloom-filter när du använder beräkning som inte stöder dessa funktioner.
Ett Bloom-filterindex är en utrymmeseffektiv datastruktur som gör att data hoppar över valda kolumner, särskilt för fält som innehåller godtycklig text.
Så här fungerar Bloom-filterindex
Azure Databricks Bloom-filterindexen består av en datahoppande index för varje datafil. Bloom-filterindexet kan användas för att fastställa att ett kolumnvärde definitivt inte finns i filen eller att det förmodligen i filen. Innan en fil läses, kontrollerar Azure Databricks indexfilen, och filen läses endast om indexet indikerar att filen kan matcha ett datafilter.
Bloom-filter stöder kolumner med följande indatatyper: byte
, short
, int
, long
, float
, double
, date
, timestamp
och string
. Null-värden läggs inte till i Bloom-filtret, så alla null-relaterade filter kräver att du läser datafilen. Azure Databricks stöder följande datakällafilter: and
, or
, in
, equals
och equalsnullsafe
. Bloom-filter stöds inte i kapslade kolumner.
Konfiguration och referens
Använd följande syntax för att aktivera ett Bloom-filter:
CREATE BLOOMFILTER INDEX
ON TABLE table_name
FOR COLUMNS(column_name OPTIONS (fpp=0.1, numItems=5000))
Syntaxinformation finns i CREATE BLOOM FILTER INDEX och DROP BLOOM FILTER INDEX.
Om du vill inaktivera Bloom-filteråtgärder anger du konfigurationen på sessionsnivå spark.databricks.io.skipping.bloomFilter.enabled
till false
.
Visa listan över Bloom-filterindex
Om du vill visa listan över index kör du:
spark.table("<table-with-indexes>").schema.foreach(field => println(s"${field.name}: metadata=${field.metadata}"))
Till exempel: