hive动态分区表的使用

========================================================

create table dpartition(id int,name string) partitioned by(dt string);   --创建分区表
set hive.exec.dynamic.partition=true;     --开启动态分区,默认是false
set hive.exec.dynamic.partition.mode=nonstrict;   --开启允许所有分区都是动态的,否则必须要有静态分区才能使用

create table b(id int,name string,dt string) row format delimited fields terminated by ',';  --创建中间表
insert overwrite table dpartition partition(dt) select id ,name,dt from b;    --覆盖插入到分区表,更新指定时间戳,需要在分区字段指定相应时间,可动态更新
=========================================================
dpartition (动态分区表)
1,zhangsan,20180201
2,lisi,20180201
3,wangwu,20180201
4,zhaoliu,20180202
5,tianqi,20180202
6,qiangqiang,20180202
7,minging,20180203
8,xiaogang,20180203
9,langlang,20180203
例如dpartition表中原有20180201,20180202,20180203三天数据表中原有20180201,20180202,20180203三天数据
-------------------------------
B(待插入表)
1,one,20180201
2,two,20180201
3,three,20180201
7,four,20180203
8,five,20180203
9,six,20180203
10,liuliu,20180204
11,dada,20180204
insert overwrite table dpartition partition(dt) select id ,name,dt from B;    --动态覆盖插入分区表
------------------------------
dpartition(动态分区表) 结果
1,one,20180201
2,two,20180201
3,three,20180201
4,zhaoliu,20180202
5,tianqi,20180202
6,qiangqiang,20180202
7,four,20180203
8,five,20180203
9,six,20180203
10,liuliu,20180204
11,dada,20180204
此时会发现20180201被更新,20180202不变(因为分区,不受覆盖影响),20180203被更新,20180204新增

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值