配置单元必须使用union all指定实际数据源(from)

tjjdgumg  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(360)

我有个关于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版本。

oaxa6hgo

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数据库的功能。
我希望这对你有帮助!!!

相关问题