Reg: Эффективность среди оптимизаторов запросов в улье - PullRequest
2 голосов
/ 19 апреля 2020

После прочтения о методах оптимизации запросов я узнал о следующих методах.

1. Indexing - bitmap and BTree
2. Partitioning
3. Bucketing

Я понял разницу между разбиением на разделы и разбивкой на блоки, и когда их использовать, но я все еще не уверен, как индексы на самом деле Работа. Где хранятся метаданные для индекса? Это наменоде, который его хранит? То есть на самом деле при создании разделов или сегментов мы можем видеть несколько каталогов в hdfs, что объясняет оптимизацию производительности запросов, но как визуализировать индексы? Действительно ли они используются в реальной жизни, несмотря на то, что на рисунке изображены разделы и сегменты?

Пожалуйста, помогите мне по вышеуказанным запросам, и есть ли какая-нибудь специальная страница для oop и сообщества разработчиков кустов?

1 Ответ

2 голосов
/ 20 апреля 2020
  1. Индексы в Hive никогда не использовались в реальной жизни и никогда не были эффективными, и, как заметил @mazaneicha в комментарии, функция индексирования полностью удалена в Hive 3.0, прочитайте это Jira: HIVE-18448 . В любом случае это была отличная попытка, благодаря поддержке Facebook , были извлечены ценные уроки.

Но в OR C есть легкие индексы (ну, на самом деле это не классические индексы c, а фильтры min, max и Bloom, это помогает обрезать полосы). ИЛИ C индексы также наиболее эффективны, если данные сортируются при вставке (распространять + сортировать)

Секционирование является наиболее эффективным, если схема секционирования соответствует тому, как таблица фильтруется или как она загружается (позволяет загружать разделы параллельно, если инкрементные данные представляют собой весь раздел, он работает эффективно).

Пакетирование может помочь с оптимизацией объединений и групп, но у sort-merge-bucket-mapjoin есть серьезные ограничения, делающие его также неэффективным. Обе таблицы должны иметь одинаковую схему группирования, которая в реальной жизни встречается редко или может быть крайне неэффективной. Также данные должны быть отсортированы при загрузке ведра.

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

Полезные ссылки.

Официальная документация: LanguageManual

Сообщество Cloudera: https://community.cloudera.com/

...