Bloom-szűrő indexek
Jegyzet
Amikor Photon-kompatibilis számítási kapacitást és a Databricks Runtime 12.2-s vagy újabb verzióját használjuk, a prediktív I/O felülmúlja a Bloom-szűrőket az olvasási teljesítményben. Lásd Mi a prediktív I/O?.
A Databricks Runtime 13.3 vagy újabb verziójában a Databricks a Deltatábla-elrendezéshez a klaszterezés alkalmazását javasolja. Lásd A Delta-táblákfolyékony fürtözésének használata című témakört.
A Databricks csak akkor javasolja a Bloom-szűrők használatát, ha olyan számítást használ, amely nem támogatja ezeket a funkciókat.
A Bloom szűrőindex egy helytakarékos adatstruktúra, amely lehetővé teszi az adatok kihagyását a kiválasztott oszlopokon, különösen az tetszőleges szöveget tartalmazó mezők esetében.
A Bloom szűrőindexek működése
Az Azure Databricks Bloom szűrőindexek minden egyes adatfájlhoz tartozó adatkihagyó indexekből állnak. A Bloom szűrőindex segítségével megállapíthatja, hogy egy oszlopérték biztosan nincs a fájlban, vagy valószínűleg benne van a fájlban. A fájl elolvasása előtt az Azure Databricks ellenőrzi az indexfájlt, és a fájl csak akkor lesz olvasható, ha az index azt jelzi, hogy a fájl megfelelhet egy adatszűrőnek.
A Bloom szűrők a következő bemeneti adattípusokkal támogatják az oszlopokat: byte
, short
, int
, long
, float
, double
, date
, timestamp
és string
. A rendszer nem ad hozzá null értékeket a Bloom szűrőhöz, ezért minden nullhoz kapcsolódó szűrőnek be kell olvasnia az adatfájlt. Az Azure Databricks a következő adatforrásszűrőket támogatja: and
, or
, in
, equals
és equalsnullsafe
. Bloom-szűrők nem támogatottak a beágyazott oszlopokban.
Konfiguráció és referencia
A Bloom-szűrő engedélyezéséhez használja az alábbi szintaxist:
CREATE BLOOMFILTER INDEX
ON TABLE table_name
FOR COLUMNS(column_name OPTIONS (fpp=0.1, numItems=5000))
A szintaxis részleteiért lásd: CREATE BLOOM FILTER INDEX és DROP BLOOM FILTER INDEX.
A Bloom-szűrőműveletek letiltásához állítsa a munkamenetszint spark.databricks.io.skipping.bloomFilter.enabled
konfigurációját false
.
A Bloom szűrőindexek listájának megjelenítése
Az indexek listájának megjelenítéséhez futtassa a következőt:
spark.table("<table-with-indexes>").schema.foreach(field => println(s"${field.name}: metadata=${field.metadata}"))
Például: