Вы должны определить таблицы, которые должны быть CLUSTERED BY
той же колонке и SORTED BY
той же колонке в том же порядке INTO
такое же количество ведер.
Затем вы должны установить вышеуказанные настройки, как вы уже указали И написать подсказку /*+MAPJOIN(x)*/
где x - одна из таблиц.
Кроме того, обе таблицы должны быть объединены как AS IS в условии соединения, и вы не можете использовать их в подзапросе перед соединением, потому что данные не будут ведрами и отсортированы после первого запроса, который происходит первым.
И, наконец, столбцы соединения должны быть теми, в которых таблицы находятся в ведомости/сортируются.
Когда вы вставляете данные в таблицы, вы можете либо установить hive.enforce.sorting
(установите значение true), либо вручную введите команду сортировки.
Улей не проверяет, действительно ли сортируются ведра, поэтому, если они не могут вызвать неправильных результатов на выходе.
Каждый картограф будет считывать ведро из первой таблицы и соответствующее ведро со второго, и он будет выполнять объединение типа сортировки.
На ваш вопрос - Нет, они не должны сортироваться по всему миру.
P.S.
Перед выполнением запроса вы должны выдать команду EXPLAIN, и вы увидите, будет ли улей планировать объединение Merge-sort bucket или нет.
Отлично! У вас есть пример полного запроса? – javadba