Улей союз всех выступлений
Если у меня есть два запроса, которые запрашивают данные из одной и той же таблицы, но каждая группа по разным столбцам. Тогда я должен использовать два отдельных запроса или использовать 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 были сделаны некоторые улучшения, так что вы можете попробовать, если вы используете одну из более новых версий.