Готовый перевод Cloudera Imapala: Руководство начинающего / Cloudera Imapala: Tutorials for Getting Started: Cross Joins and Cartesian Products with the CROSS JOIN Operator
Объединение таблиц c помощью CROSS JOIN
Изначально, запросы с JOIN в Impala были ограничены обязательным наличием хотя бы одного сравнения колонок таблиц для обехи сторон. При обратоке большых таблиц, любой ошибочный запрос выполняющий декартово равенство мог потреблять огромное количество ресурсов кластера.
В версии Impala 1.2.2 и выше, ограничение можно обойти используя оператор CROSS JOIN. Часть WHERE при этом остается обязательной в выражении SELECT * FROM t1 JOIN t2 для обработки всех комбинаций обеих таблиц. Использование же CROSS JOIN позволяет получить декартово равенство. Данное выражение допустимо для неболших таблиц, размер которых меньше оперативной памяти одной из нод Impala.
Данный пример показывает запрос, генерирующий сценарий комикса, в котором каждый супер герой будет иметь возможность сразиться с каждым из злодеев. Для начала мы выполним объединяющий запрос с равенством, который позволит встретиться только тем, кто находится в одном месте и эпохе.
Читателям нравится экшен, так что добавим путешествия во врмени и пространстве что бы любой из героев мог встретиться с любым их злодеев. В версиях Impala раньше 1.2.2 такой запрос был бы невозможен - условие объединения было обязательным.
Impala 1.2.2 позволяет изменить запрос заменив JOIN на CROSS JOIN и получить требуемую комбинацию.
Внимание! Этот перевод, возможно, ещё не готов.
Его статус: идёт перевод
Переведено на Нотабеноиде
http://notabenoid.org/book/53374/230193
Переводчики: nipman
Настройки
Готово:
