HiveQL 联合所有

问题描述 投票:0回答:3

我有桌子_A:

id var1 var2
1   a    b
2   c    d

表_B:

id var1 var2  
3   e    f
4   g    h

我想要的只是表格,组合:

id var1 var2
1   a    b
2   c    d
3   e    f
4   g    h 

这是我的.hql:

CREATE TABLE combined AS
SELECT all.id, all.var1, all.var2
FROM (
  SELECT a.id, a.var1, a.var2  
  FROM table_A a  
  UNION ALL  
  SELECT b.id, b.var1, b.var2  
  FROM table_B b
) all;

我直接从 Edward Capriolo 等人的《Programming Hive》第 112 页进行编码。

无论我尝试上述内容的表面上合理的变化,我得到的错误是

cannot recognize input near '.' 'id' ',' in select expression.

我尝试在表名和别名、星号之间使用

AS
,因为我想要两个表中的所有内容。同样的错误。我尝试过其他事情并遇到其他错误...我想做的就是
UNION
两张桌子。 (我尝试过使用
UNION
而不是
UNION ALL
— 同样的错误)。

hadoop union hive hiveql
3个回答
15
投票

只需将所有替换为另一个单词即可。这似乎是一个保留关键字。例如:

CREATE TABLE combined AS
SELECT unioned.id, unioned.var1, unioned.var2
FROM (
  SELECT a.id, a.var1, a.var2  
  FROM table_A a  
  UNION ALL  
  SELECT b.id, b.var1, b.var2  
  from table_B b
) unioned;

2
投票

我有类似的查询工作。只需更改表名和列名即可。试试这个。希望这对您有帮助。

CREATE TABLE new_table AS
SELECT DISTINCT
    id,
    name
FROM
    table1
UNION ALL
SELECT DISTINCT
    id,
    name
FROM
    table2;

1
投票

试试这个,它对我有用。

CREATE TABLE combined AS
SELECT id, var1, var2
FROM (
  SELECT id, var1, var2  
  FROM table_A
  UNION ALL  
  SELECT id, var1, var2  
  from table_B
) a;
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.