我對Hive UNION ALL
規範有疑問。Hive必須使用UNION ALL指定實際數據源(FROM)
此查詢是有效的Hive查詢。
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本身的錯誤? 我使用的Hive版本是0.13,Hadoop 2.4。
感謝您的評論。但在我的環境中,上面的查詢成功了。你使用了哪個版本?選擇1作爲ID,'tom'作爲名字; OK tom 已用時間:22.205秒,獲取:1行''' –
我正在使用Hive 1.2.x,您使用的是哪個版本? – Farooque
我正在使用0.13,HDP2。 –