Правильный порядок выполнения операторов Hive SQL

Большие данные

Верен ли приведенный выше порядок выполнения? Мы можем посмотреть его через план выполнения объяснения. Контента слишком много, поэтому давайте рассмотрим его поэтапно.

  1. Сначала посмотрите на зависимости выполнения оператора sql:

Мы видим, что Стадия-5 является корневой, то есть Стадия-5 выполняется первой, Стадия-2 зависит от Стадии-5, а Стадия-0 зависит от Стадии-2.

  1. Сначала выполните этап 5:

Метка ① на рисунке — это операция сканирования таблицы, обратите внимание на таблицу b, которая сканируется первой, то есть на таблицу после левого соединения, а затем выполните операцию фильтрации (метка ② на рисунке). мы фильтруем таблицу a, но Hive также выполняет ту же операцию фильтрации для таблицы b, что уменьшает объем связанных данных.

  1. Далее выполните Этап-2:
  • Первая — это операция на стороне карты:

Сначала просмотрите таблицу a (отмечена ① на рисунке); затем выполните операцию фильтрации idno > '112233' (отмечена ② на рисунке); затем выполните левое соединение, связанный ключ idno (отмечен ③ на рисунке). рисунок); после выполнения связанной операции будет выполнена операция вывода, и на выходе будут три поля, включая два поля выбора и одно поле группировки (отмечено ④ на рисунке); затем выполняется группировка по операции , а метод группировки — хэш (обозначен ⑤ на рисунке); затем операция сортировки в соответствии с idno для прямой сортировки (обозначен ⑥ на рисунке).

  • Затем идет побочная операция Reduce:

Сначала выполните группировку по операции, обратите внимание, что метод группировки в это время — mergepartial (отмечен ① на рисунке); затем выполните операцию выбора, в это время есть только два выходных поля, а количество выходных строк — 30304. строки (отмечены ② на рисунке)); затем выполните операцию фильтрации, отфильтруйте поля с count_user>1, и количество выходных строк составит 10101 строку (отмечено ③ на рисунке); затем ограничьте количество выходных строк (отмечены ④ на рисунке), отмечены ⑤ Указывает, следует ли сжимать файл, false не сжимает.

Объем данных в плане выполнения — это только прогнозируемый объем данных, а не фактическая операция, поэтому данные могут быть неточными!

  1. И, наконец, этап Stage-0:

Ограничьте количество строк в конечном выводе до 10 строк.

Суммировать

В результате приведенного выше анализа плана выполнения SQL можно резюмировать следующие моменты:

  1. Каждый этап является независимым MR. Сложный SQL-оператор hive может генерировать несколько этапов. Конкретные шаги можно увидеть в описании плана выполнения.

  2. Для ключа группировки это должно быть поле в таблице, а для ключа наличия это должно быть поле выбора.

  3. order by выполняется после выбора, поэтому ключ order by должен быть полем select.

  4. выберите лучше всего указать поле,select *Это увеличит много ненужного потребления (ЦП, ввод-вывод, память, пропускная способность сети).