Join 将两个分区的表合并到一个表中,但合并到两个不同的分区中

Join 将两个分区的表合并到一个表中,但合并到两个不同的分区中,join,hive,partitioning,Join,Hive,Partitioning,我是新来的蜂巢,如果有人能帮助我处理蜂巢查询,我将不胜感激 有两个表A和B具有完全相同的模式,但数据不同,有4个分区。我需要将这两个表合并成一个具有(4+1=5)分区的表。添加的分区告诉数据来自哪些表。例如,假设新分区被命名为“源”。如果数据来自表A,则源将等于“来自A”,如果数据来自表B,则源将等于“来自B” 及 创建新的分区表 Create table C ( col1 string, col2 string ) partitioned by ( source string, DD st

我是新来的蜂巢,如果有人能帮助我处理蜂巢查询,我将不胜感激

有两个表A和B具有完全相同的模式,但数据不同,有4个分区。我需要将这两个表合并成一个具有(4+1=5)分区的表。添加的分区告诉数据来自哪些表。例如,假设新分区被命名为“源”。如果数据来自表A,则源将等于“来自A”,如果数据来自表B,则源将等于“来自B”


创建新的分区表

Create table C (
col1 string,
col2 string
)
partitioned by (
source string,
DD   string,                                    
EE   string,                                    
FF   string,                                    
GG   string
);
然后将数据加载到新表中:

set hive.exec.dynamic.partition=true;
set hive.exec.dynamic.partition.mode=nonstrict;

insert overwrite table C partition(source,DD,EE,FF,GG)
select col1, col2, 
       --partitions
      'from_A' source, DD, EE, FF, GG 
  from A
distribute by DD, EE, FF, GG;
以及表B中的并行负载数据:

set hive.exec.dynamic.partition=true;
set hive.exec.dynamic.partition.mode=nonstrict;

insert overwrite table C partition(source,DD,EE,FF,GG)
select col1, col2, 
      --partitions
      'from_B' source, DD, EE, FF, GG 
 from B
distribute by DD, EE, FF, GG;
set hive.exec.dynamic.partition=true;
set hive.exec.dynamic.partition.mode=nonstrict;

insert overwrite table C partition(source,DD,EE,FF,GG)
select col1, col2, 
       --partitions
      'from_A' source, DD, EE, FF, GG 
  from A
distribute by DD, EE, FF, GG;
set hive.exec.dynamic.partition=true;
set hive.exec.dynamic.partition.mode=nonstrict;

insert overwrite table C partition(source,DD,EE,FF,GG)
select col1, col2, 
      --partitions
      'from_B' source, DD, EE, FF, GG 
 from B
distribute by DD, EE, FF, GG;