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


СОЗДАНИЕ ИНДЕКСА ФИЛЬТРА БЛУМ

Область применения: флажок Databricks SQL флажок Databricks Runtime

Создает индекс фильтра Блума для новых или перезаписанных данных; он не создает фильтры Блума для существующих данных. Команда завершается ошибкой, если имя таблицы либо один из столбцов не существует. Если для столбца включена фильтрация Блума, существующие параметры фильтра Блума заменяются новыми параметрами.

Синтаксис

CREATE BLOOMFILTER INDEX
ON [TABLE] table_name
FOR COLUMNS( { columnName1 [ options ] } [, ...] )
[ options ]

options
  OPTIONS ( { key1 [ = ] val1 } [, ...] )

Параметры

Хотя невозможно создать индекс фильтра Блума для уже записанных данных, команда OPTIMIZE обновляет фильтры Блума для данных, которые были реорганизованы. Таким образом, можно выполнить фильтрацию Блума задним числом, запустив OPTIMIZE в таблице:

  • если таблица ранее не была оптимизирована;
  • с другим размером файла, который требует повторной записи файлов данных;
  • с ZORDER (или другого ZORDER, если он уже существует), который требует повторной записи файлов данных.

Можно настроить фильтр Блума, определив параметры на уровне столбца или на уровне таблицы:

  • fpp: вероятность ложноположительного результата. Требуемый коэффициент вероятности ложноположительного результата для каждого записанного фильтра Блума. Это влияет на число битов, необходимых для размещения одного элемента в фильтре Блума, и влияет на размер фильтра Блума. Значение должно быть больше 0 и меньше или равно 1. Значение по умолчанию — 0,1. В этом случае требуется 5 бит на каждый элемент.
  • numItems: число отдельных элементов, которые может содержать файл. Этот параметр важен для качества фильтрации, так как он влияет на общее число битов, используемых в фильтре Блума (количество элементов — количество битов на элемент). Если этот параметр задан неверно, то фильтр Блума будет либо очень разреженным, из-за чего место на диске тратится неэффективно и замедляется выполнение запросов, которые должны загружать этот файл, либо он переполнен и менее точен (повышенный FPP). Это значение должно быть больше 0. Значение по умолчанию — 1 млн элементов.
  • maxExpectedFpp: максимальная ожидаемая ложноположимая вероятность записи фильтра Блума на диск. Если ожидаемая вероятность ложноположительного результата больше этого порогового значения, избирательность фильтра Блума слишком низка. Время и ресурсы, затрачиваемые на использование фильтра Блума, превышают его полезность. Оно должно находиться в диапазоне от 0 до 1. Значение по умолчанию равно 1,0 (отключено).

Эти параметры играют роль только при записи данных. Эти свойства можно настроить на различных иерархических уровнях: на уровне операции записи, на уровне таблицы и на уровне столбца. Уровень столбца имеет приоритет над уровнями таблицы и операции, а уровень таблицы имеет приоритет по сравнению с уровнем операции.

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