Улей союз всех выступлений

Если у меня есть два запроса, которые запрашивают данные из одной и той же таблицы, но каждая группа по разным столбцам. Тогда я должен использовать два отдельных запроса или использовать union all функционировать? Моя забота о производительности. Потому что я сказал, что некоторые люди union all следует избегать, если не нужно, иначе это большие накладные расходы.

Например, я должен использовать UNION ALL для нижеуказанных запросов? Пожалуйста, порекомендуйте. Благодарю.

INSERT INTO TABLE newtable
SELECT SUBSTRING(A1, 1, 7) AS col1, COUNT(DISTINCT B) AS col2, C AS col3
FROM oldtable
GROUP BY SUBSTRING(A1, 1, 7), C;

INSERT INTO TABLE newtable
SELECT A2 AS col1, COUNT(DISTINCT B) AS col2, C AS col3
FROM oldtable
GROUP BY A2, C;

1 ответ

Допустим, у вас есть UNION ALL чьи родители 2 рабочих места MapReduce. Каждое задание MapReduce будет записывать свои выходные данные во временные файлы, а затем UNION прочитает эти временные файлы и запишет в ваше окончательное хранилище. Так что, как вы можете видеть, это очень расточительно, потому что в итоге вы читаете и пишете результаты дважды!

В Hive 0.10 были сделаны некоторые улучшения, так что вы можете попробовать, если вы используете одну из более новых версий.

Другие вопросы по тегам