почему не работают фильтры Блума, подскажите пожалуйста - PullRequest
0 голосов
/ 05 марта 2020

У меня есть две таблицы: оригинальная и новая с фильтрами Блума. Фильтр Блума создан для столбца int (CLUSTERED BY и 'или c .bloom.filter.columns'). в hdfs раздела я вижу количество файлов = количество уникальных значений в столбце. но когда я запрашиваю (выбираю min (...) из таблицы, где id = ...) эти таблицы, запросы заканчивают выполнение одновременно. и в журналах работы и в «объяснять анализ» я не вижу использования фильтра Блума, и запрос читает весь раздел. что еще нужно настроить, чтобы фильтр Блума работал, запросы выполняются быстрее, и не все файлы в разделе читаются, а только один файл с нужным идентификатором?

1 Ответ

0 голосов
/ 06 марта 2020

Фильтры Блума могут помочь не во всех случаях.

ИЛИ C содержит индексы на уровне файла, уровне чередования и уровне строки (для 10000 строк, настраивается). Если PPD настроен , индексы (минимальные, максимальные значения) могут использоваться для пропуска файлов чтения ( часть нижнего колонтитула будет прочитана в любом случае ), полосы также могут быть пропущены. Эти индексы полезны для фильтрации сортируемых последовательных значений и запросов диапазона. например, целое число. Чтобы индексы были эффективными, вы должны сортировать данные по индексным ключам при вставке. Несортированный индекс не эффективен, потому что все полосы могут содержать все ключи.

Сортировка во время вставки может быть дорогой.

В большинстве случаев достаточно иметь только индексы.

Фильтры Блума - это структуры, которые могут помочь проверить, нет ли ключа в набор данных с вероятностью 100%.

Фильтры Блума эффективны для запросов на равенство, особенно для непоследовательных несортированных значений , таких как GUID. Индексы MIN / MAX не работают эффективно для таких значений. Фильтр по спецификациям c GUID должен быть очень эффективным с фильтром Блума.

Для сортируемых последовательных значений, таких как целочисленный идентификатор, минимальные / максимальные значения, хранящиеся в ИЛИ C, индексы (отсортированные) лучше.

...