Bloom-szűrőindexek
Feljegyzés
A Photon-kompatibilis számítás és a Databricks Runtime 12.2-s vagy újabb verziójának használatakor a prediktív I/O túlteljesít a kinyíló szűrőkön az olvasási teljesítmény érdekében. Lásd : Mi a prediktív I/O?.
A Databricks Runtime 13.3-at vagy újabb verzióját használva a Databricks javasolja a fürtszolgáltatás használatát a Delta-táblaelrendezéshez. Lásd: Folyékony fürtözés használata Delta-táblákhoz.
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őindexei az egyes adatfájlok adatkihagyási indexéből állnak. A Bloom szűrőindex segítségével megállapíthatja, hogy egy oszlop értéke véglegesen nem szerepel-e a fájlban, vagy valószínűleg a fájlban van. 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
. A 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 and 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ót a következőre false
: .
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élda: