Bloeifilterindexen
Notitie
Wanneer u met Photon ingeschakelde berekeningen en Databricks Runtime 12.2 of hoger gebruikt, presteert voorspellende I/O beter dan bloeifilters voor leesprestaties. Zie Wat is voorspellende I/O?.
In Databricks Runtime 13.3 en hoger raadt Databricks aan om clustering te gebruiken voor de indeling van deltatabellen. Zie Liquid clustering gebruiken voor Delta-tabellen.
Databricks raadt het gebruik van Bloom-filters alleen aan wanneer u rekenkracht gebruikt die deze functies niet ondersteunt.
Een Bloom-filterindex is een ruimte-efficiƫnte gegevensstructuur waarmee gegevens kunnen worden overgeslagen op gekozen kolommen, met name voor velden die willekeurige tekst bevatten.
Hoe Bloom-filterindexen werken
Azure Databricks Bloom-filterindexen bestaan uit een index voor het overslaan van gegevens voor elk gegevensbestand. De Bloom-filterindex kan worden gebruikt om te bepalen dat een kolomwaarde definitief niet in het bestand staat of dat deze waarschijnlijk in het bestand staat. Voordat u een bestand leest, controleert Azure Databricks het indexbestand en wordt het bestand alleen-lezen als de index aangeeft dat het bestand mogelijk overeenkomt met een gegevensfilter.
Bloom-filters ondersteunen kolommen met de volgende invoergegevenstypen: byte
, short
, int
, long
, float
, double
, date
, , , timestamp
en string
. Null-waarden worden niet toegevoegd aan het Bloom-filter, dus voor elk null-gerelateerd filter moet het gegevensbestand worden gelezen. Azure Databricks ondersteunt de volgende gegevensbronfilters: and
, or
, in
, equals
en equalsnullsafe
. Bloom-filters worden niet ondersteund voor geneste kolommen.
Configuratie en verwijzing
Gebruik de volgende syntaxis om een Bloom-filter in te schakelen:
CREATE BLOOMFILTER INDEX
ON TABLE table_name
FOR COLUMNS(column_name OPTIONS (fpp=0.1, numItems=5000))
Zie CREATE BLOOM FILTER INDEX en DROP BLOOM FILTER INDEX voor syntaxisdetails.
Als u Bloom-filterbewerkingen wilt uitschakelen, stelt u de configuratie op sessieniveau spark.databricks.io.skipping.bloomFilter.enabled
in op false
.
De lijst met bloeifilterindexen weergeven
Voer de volgende opdracht uit om de lijst met indexen weer te geven:
spark.table("<table-with-indexes>").schema.foreach(field => println(s"${field.name}: metadata=${field.metadata}"))
Voorbeeld: