hadoop—使用一条insert语句在多个分区中插入数据

omhiaaxx  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(664)

我有表a和表b,其中b是a的分区表,使用一个名为x的字段。
当我想从a到b插入数据时,我通常执行以下语句:

INSERT INTO TABLE B PARTITION(X=x) SELECT <columnsFromA> FROM A WHERE X=x

现在我想要实现的是能够插入一个x的范围,比如x1,x2,x3。。。我怎样才能在一句话中做到这一点?

chhkpiq4

chhkpiq41#

使用动态分区负载:

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

INSERT OVERWRITE TABLE table_B PARTITION(X)
select 
col_1,
col_2,
...
col_N,
X --partition column is the last one
 from 
      table_A
where X in ('x1', 'x2', 'x3'); --filter here

或使用 select * from table_A 如果a和b中的列顺序相同。分区列(x)应该是最后一个。

相关问题