Indeksy filtrów Blooma
Notatka
W przypadku korzystania z obliczeń z obsługą technologii Photon i środowiska Databricks Runtime w wersji 12.2 lub nowszej, operacje we/wy predykcyjne przewyższają wydajnością filtry Blooma w zakresie odczytu. Zobacz Co to jest predykcyjne we/wy?.
W Databricks Runtime 13.3 lub nowszym platforma Databricks zaleca korzystanie z klastrowania dla układu Delta table. Zobacz użycie płynnego klastrowania dla Delta tables.
Usługa Databricks zaleca używanie filtrów Bloom tylko w przypadku korzystania z obliczeń, które nie obsługują tych funkcji.
Indeks filtru Bloom to oszczędzająca miejsce struktura danych, która umożliwia pomijanie danych na wybranych columns, szczególnie w przypadku pól zawierających dowolny tekst.
Jak działają indeksy filtru Blooma
Indeksy filtru Bloom w usłudze Azure Databricks obejmują indeks pomijania danych dla każdego pliku danych. Indeks filtru Bloom może służyć do określenia, że wartość column jest ostatecznie nie znajduje się w pliku lub że jest prawdopodobnie w pliku. Przed odczytaniem pliku usługa Azure Databricks sprawdza plik indeksu, a plik jest odczytywany tylko wtedy, gdy indeks wskazuje, że plik może być zgodny z filtrem danych.
Filtry Bloom obsługują columns z następującymi typami danych wejściowych: byte
, short
, int
, long
, float
, double
, date
, timestamp
i string
. Wartości null nie są dodawane do filtru Bloom, więc każdy filtr powiązany z wartością null wymaga odczytania pliku danych. Usługa Azure Databricks obsługuje następujące filtry źródeł danych: and
, or
, in
, equals
i equalsnullsafe
. Filtry Bloom nie są obsługiwane w zagnieżdżonym columns.
Konfiguracja i odniesienie
Użyj następującej składni, aby włączyć filtr Blooma:
CREATE BLOOMFILTER INDEX
ON TABLE table_name
FOR COLUMNS(column_name OPTIONS (fpp=0.1, numItems=5000))
Aby uzyskać szczegółowe informacje o składni, zobacz CREATE BLOOM FILTER INDEX i DROP BLOOM FILTER INDEX.
Aby wyłączyć operacje filtrowania Blooma, setspark.databricks.io.skipping.bloomFilter.enabled
konfigurację poziomu sesji na false
.
Wyświetlanie list indeksów filtrów Bloom
Aby wyświetlić indeks list, uruchom polecenie:
spark.table("<table-with-indexes>").schema.foreach(field => println(s"${field.name}: metadata=${field.metadata}"))
Na przykład: