Выполняет ли «ПРАВИЛЬНАЯ ВСТРОЕННАЯ ВСТУПЛЕНИЕ» и «ВЛЕВОЕ ВЗАИМОДЕЙСТВИЕ» в HIVE?RIGHT/LEFT OUTER JOIN работают по-разному в HIVE?
Например, таблица А представляет собой небольшой стол. Таблица B намного больше и разделена на col2.
Запрос 1: SELECT * FROM A RIGHT OUTER JOIN B on (A.col=B.col) WHERE B.col2>20131001
Запрос 2: SELECT * FROM A LEFT OUTER JOIN B on (A.col=B.col) WHERE B.col2>20131001
Query 1 просматривает только небольшое количество разделов, но Query 2 сканирует все разбиения таблицы B. Является ли это ошибка или я что-то пропустил ?
Спасибо!
Вы имеете в виду секционирования в 'col2' (время), а фильтр 'B.col2> 20131001' не сокращает разделы во втором случае? Можете ли вы опубликовать планы EXPLAIN для этих двух? –
Вы также должны прочитать [MapJoin & Partition Pruning] (https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=34015666) и посмотреть, подходит ли ваш случай описанию проблемы. –