Поделиться через


Индексы фильтров Блума

Примечание.

При использовании вычислительных ресурсов с поддержкой Photon и Databricks Runtime 12.2 или более поздней версии прогнозные показатели ввода-вывода преобразовывают фильтры блумов для производительности чтения. См. сведения о прогнозных ввода-выводах.

В Databricks Runtime 13.3 и более поздних версиях Databricks рекомендует использовать кластеризация для макета таблицы Delta. См. статью Использование "жидкой" кластеризации для таблиц Delta.

Databricks рекомендует использовать фильтры Блум только при использовании вычислений, которые не поддерживают эти функции.

Индекс фильтра Блума — это структура данных, которой требуется меньше пространства. Она позволяет пропускать данные по выбранным столбцам, что особенно актуально для полей, содержащих произвольный текст.

Принцип действия индексов фильтров Блума

Индексы фильтров Блум Azure Databricks состоят из индекса пропуска данных для каждого файла данных. Индекс фильтра Блума можно использовать для определения того, что значение столбца окончательно не находится в файле или что он , вероятно, находится в файле. Перед чтением файла Azure Databricks проверка файл индекса, а файл считывается только в том случае, если индекс указывает, что файл может соответствовать фильтру данных.

Фильтры блум поддерживают столбцы со следующими входными типами данных: byte, short, doublefloatlongdateinttimestampи .string Значения NULL не добавляются в фильтр Блума, поэтому для любого связанного с NULL фильтра требуется чтение файла данных. Azure Databricks поддерживает следующие фильтры источников данных: and, or, in, equals и equalsnullsafe. Фильтры Блума не поддерживаются для вложенных столбцов.

Конфигурация и справочник

Используйте следующий синтаксис, чтобы включить фильтр Блума:

CREATE BLOOMFILTER INDEX
ON TABLE table_name
FOR COLUMNS(column_name OPTIONS (fpp=0.1, numItems=5000))

Сведения о синтаксисе см. в разделе CREATE BLOOM FILTER INDEX и DROP BLOOM FILTER INDEX.

Чтобы отключить операции фильтра Блум, задайте для конфигурации уровня spark.databricks.io.skipping.bloomFilter.enabled сеанса значение false.

Отображение списка индексов фильтров Блума

Чтобы отобразить список индексов, выполните:

spark.table("<table-with-indexes>").schema.foreach(field => println(s"${field.name}: metadata=${field.metadata}"))

Например:

Отображение индексов