我有个关于Hive的问题 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本身的虫子?我使用的hive版本是hadoop2.4的0.13版本。
1条答案
按热度按时间oaxa6hgo1#
全部
SELECT
报表需要FROM
条款。甚至你的第一个问题
SELECT 1 as id, 'Tom' as name
给出如下错误:然而,如果我们逃跑
SELECT 1 as id, 'Tom' as name FROM table1
哪里table1
是我数据库中的表,那么我们得到如下结果:以上两个问题证明了
FROM
条款在所有方面都是必需的SELECT
声明。没关系
UNION ALL
或者别的什么。这是hive数据库的功能。
我希望这对你有帮助!!!