我对Hive UNION ALL
规范有疑问。
此查询是有效的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 I使用的版本是Hadoop 2.4的0.13。