Готовый перевод 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

Настройки

Готово:

54.54% КП = 1.0

Непереведённые фрагменты будут пропущены.