Cloudera Imapala: Руководство начинающего / Cloudera Imapala: Tutorials for Getting Started: Cross Joins and Cartesian Products with the CROSS JOIN Operator

Английский оригинал Перевод на русский

Сожалеем, но текст оригинала доступен только зарегистрированным пользователям.

Объединение таблиц c помощью CROSS JOIN

nipman 19.07.14 в 11:44

0

Изначально, запросы с JOIN в Impala были ограничены обязательным наличием хотя бы одного сравнения колонок таблиц для обехи сторон. При обратоке большых таблиц, любой ошибочный запрос выполняющий декартово равенство мог потреблять огромное количество ресурсов кластера.

nipman 19.07.14 в 11:47

0

В версии Impala 1.2.2 и выше, ограничение можно обойти используя оператор CROSS JOIN. Часть WHERE при этом остается обязательной в выражении SELECT * FROM t1 JOIN t2 для обработки всех комбинаций обеих таблиц. Использование же CROSS JOIN позволяет получить декартово равенство. Данное выражение допустимо для неболших таблиц, размер которых меньше оперативной памяти одной из нод Impala.

nipman 19.07.14 в 11:52

0

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

nipman 19.07.14 в 11:56

0

Читателям нравится экшен, так что добавим путешествия во врмени и пространстве что бы любой из героев мог встретиться с любым их злодеев. В версиях Impala раньше 1.2.2 такой запрос был бы невозможен - условие объединения было обязательным.

nipman 19.07.14 в 12:41

0

Impala 1.2.2 позволяет изменить запрос заменив JOIN на CROSS JOIN и получить требуемую комбинацию.

nipman 19.07.14 в 12:42

0
Минутку...