Indexy filtrů Bloom
Poznámka:
Při použití výpočetních prostředků s podporou Photon a databricks Runtime 12.2 nebo vyšších prediktivních vstupně-výstupních operací filtry pro čtení vykvetou. Podívejte se, co je prediktivní vstupně-výstupní operace?
Databricks Runtime 13.3 a novější doporučuje používat clustering pro rozložení tabulky Delta. Viz Použití liquid clusteringu pro tabulky Delta.
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 sloupcích, 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 sloupce není v souboru rozhodně 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.
Bloom filtry podporují sloupce s následujícími vstupními datovými typy: , , , , , , , , timestamp
a string
. date
double
float
long
int
short
byte
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 ve vnořených sloupcích.
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))
Podrobnosti o syntaxi naleznete v tématu CREATE BLOOM FILTER INDEX a DROP BLOOM FILTER INDEX.
Chcete-li zakázat operace filtru Bloom, nastavte konfiguraci na úrovni spark.databricks.io.skipping.bloomFilter.enabled
relace na false
.
Zobrazení seznamu indexů filtrů Bloom
Pokud chcete zobrazit seznam indexů, spusťte:
spark.table("<table-with-indexes>").schema.foreach(field => println(s"${field.name}: metadata=${field.metadata}"))
Příklad: