У меня есть вопрос о Hive UNION ALL
.Улей должен указывать фактический источник данных (ОТ) с UNION ALL
Этот запрос является допустимым запросом на удержание.
SELECT
1 as id,
'Tom' as name
Это задание возвращает правильный результат записи, как и ожидалось.
+----------+----------------+
| id | name |
+----------+----------------+
| 1 | Tom |
+----------+----------------+
Но когда этот запрос передается с UNION ALL
, я столкнулся вопрос.
SELECT
id,
name
FROM
members
UNION ALL
SELECT
1 as id,
'Tom' as name,
Этот SQL производит исключение Error: java.lang.IllegalArgumentException: Can not create a Path from an empty string
. Я нашел, что все подзапросы UNION ALL
должны иметь фактический источник данных с FROM
. Например, выше запрос может работать как ожидается после перезаписи, как показано ниже.
SELECT
id,
name
FROM
members
UNION ALL
SELECT
1 as id,
'Tom' as name
FROM (
SELECT COUNT(1) FROM members
) t
Является ли это спецификацией SQL или Hive? Не можем ли мы запустить запрос без предложения FROM
? Или это ошибка самого улья? Версия Hive, которую я использую, - 0.13 с Hadoop 2.4.
Спасибо за замечание. Но в моей среде запрос выше успешно. Какую версию вы использовали? '' 'hive> SELECT 1 как id, 'tom' как имя; OK Том Время, затраченное на: 22,205 секунд, Получено: 1 ряд (ы) '' ' –
Я использую Hive 1.2.x, какую версию вы используете? – Farooque
Я использую 0.13, HDP2. –