【问题标题】:Combine many tables in Hive using UNION ALL?使用 UNION ALL 合并 Hive 中的许多表?
【发布时间】:2013-04-24 01:01:24
【问题描述】:

我正在尝试将多个表中的一个变量附加在一起(也称为行绑定、连接),以在 Hive 中创建一个具有单列的更长表。我认为基于这个问题(HiveQL UNION ALL)使用UNION ALL 是可能的,但我不确定实现这一目标的有效方法?

伪代码如下所示:

CREATE TABLE tmp_combined AS
SELECT b.var1 FROM tmp_table1 b
UNION ALL
SELECT c.var1 FROM tmp_table2 c
UNION ALL
SELECT d.var1 FROM tmp_table3 d
UNION ALL
SELECT e.var1 FROM tmp_table4 e
UNION ALL
SELECT f.var1 FROM tmp_table5 f
UNION ALL
SELECT g.var1 FROM tmp_table6 g
UNION ALL
SELECT h.var1 FROM tmp_table7 h;

感谢任何帮助!

【问题讨论】:

    标签: sql hive hiveql


    【解决方案1】:

    尝试以下编码...

    Select * into tmp_combined  from 
    (
        SELECT b.var1 FROM tmp_table1 b
        UNION ALL
        SELECT c.var1 FROM tmp_table2 c
        UNION ALL
        SELECT d.var1 FROM tmp_table3 d
        UNION ALL
        SELECT e.var1 FROM tmp_table4 e
        UNION ALL
        SELECT f.var1 FROM tmp_table5 f
        UNION ALL
        SELECT g.var1 FROM tmp_table6 g
        UNION ALL
        SELECT h.var1 FROM tmp_table7 h
    ) CombinedTable 
    

    与语句一起使用: 设置 hive.exec.parallel=true

    这将同时执行不同的选择,否则它将是一步一步的。

    【讨论】:

    • 这会写入新表吗?
    • 是的,它确实创建了一个新表..
    【解决方案2】:

    我会说这是进行行绑定的既简单又有效的方法,至少,这就是我将在我的代码中使用的方法。 顺便说一句,如果您直接输入伪代码,可能会导致一些语法错误,您可以尝试:

    create table join_table as
    select * from
    (select ...
    join all
    select
    join all
    select...) tmp;
    

    【讨论】:

      【解决方案3】:

      我做了同样的概念,但对于不同的表 employeelocation 我相信这可能会对你有所帮助:

      DATA:Table_e-employee
      empid empname
      13  Josan
      8   Alex
      3   Ram
      17  Babu
      25  John
      
      Table_l-location
      empid emplocation
      13  San Jose
      8   Los Angeles
      3   Pune,IN
      17  Chennai,IN
      39  Banglore,IN
      
      hive> SELECT e.empid AS a ,e.empname AS b FROM employee e 
      UNION ALL 
      SELECT l.empid AS a,l.emplocation AS b FROM location l;
      

      OutPut 别名为 ab

      13  San Jose
      8   Los Angeles
      3   Pune,IN
      17  Chennai,IN
      39  Banglore,IN
      13  Josan
      8   Alex
      3   Ram
      17  Babu
      25  John
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-07-28
        • 2020-08-08
        • 1970-01-01
        • 1970-01-01
        • 2017-07-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多