HiveQL UNION ALL

时间:2012-12-31 03:02:44

标签: hadoop union hive hiveql

我有table_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等人的编程蜂巢的第112页编码。

我得到的错误,无论我尝试的上述表面上合理的变化,都是“cannot recognize input near '.' 'id' ',' in select expression.

我尝试在表名和别名之间使用“as”,星号,因为我想要两个表中的所有内容。同样的错误。我尝试了其他的东西并得到了其他错误......我想做的就是UNION两张桌子。 (我尝试过UNION而不是UNION ALL - 同样的错误)。

3 个答案:

答案 0 :(得分:14)

只需用另一个单词替换all。它似乎是一个保留的关键字。 E.g:

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;

答案 1 :(得分:1)

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

create table new_table as
select
distinct
id, name
FROM
table1
union all
select
distinct
id,name
from
table2 
;

答案 2 :(得分:0)

尝试一下,它对我有用。

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;