Indexy filtru Bloom
Poznámka
Při použití výpočetních prostředků s podporou Photon a Databricks Runtime 12.2 nebo vyšší, předpovědní vyžití/sada procesů vstupně-výstupních operací převyšuje výkony filtrů Bloom při čtení. Viz Co je prediktivní vstup/výstup?.
Databricks Runtime 13.3 a novější doporučuje používat clustering pro rozložení delta table. Viz Použijte kapalné shlukování pro Delta tables.
Databricks doporučuje používat filtry Bloom pouze při použití výpočetních prostředků, které tyto funkce nepodporují.
Index filtru Bloom je prostorově efektivní datová struktura, která umožňuje přeskočení dat na vybraných columns, zejména pro pole obsahující libovolný text.
Jak fungují indexy filtru Bloom
Indexy filtru Azure Databricks Bloom se skládají z indexu přeskakování dat pro každý datový soubor. Index filtru Bloom lze použít k určení, že hodnota column je rozhodně není v souboru nebo že je pravděpodobně v souboru. Před čtením souboru Azure Databricks zkontroluje indexový soubor a soubor se přečte jenom v případě, že index indikuje, že soubor může odpovídat filtru dat.
Filtry Bloom podporují columns s následujícími vstupními datovými typy: byte
, short
, int
, long
, float
, double
, date
, timestamp
a string
. Hodnoty Null nejsou přidány do filtru Bloom, takže žádný související filtr null vyžaduje čtení datového souboru. Azure Databricks podporuje následující filtry zdrojů dat: and
, or
, in
, equals
a equalsnullsafe
. Filtry Bloom nejsou podporovány vnořenými columns.
Konfigurace a referenční informace
K povolení filtru Bloom použijte následující syntaxi:
CREATE BLOOMFILTER INDEX
ON TABLE table_name
FOR COLUMNS(column_name OPTIONS (fpp=0.1, numItems=5000))
Pro podrobnosti o syntaxi viz CREATE BLOOM FILTER INDEX a DROP BLOOM FILTER INDEX.
Chcete-li zakázat operace filtru Bloom, set úroveň relace spark.databricks.io.skipping.bloomFilter.enabled
konfiguraci false
.
Zobrazení list indexů filtru Bloom
Pokud chcete zobrazit list indexů, spusťte:
spark.table("<table-with-indexes>").schema.foreach(field => println(s"${field.name}: metadata=${field.metadata}"))
Například: