Hive动态分区表使用

1.有时候为了更方便地根据某个时间字段来进行增量更新数据,我们可以使用分区。而相对来说,这种时候用动态分区会多一些。

2.首先,先进入Hive命令行,输入一下的设置,打开动态分区功能:

set hive.exec.dynamic.partition =true; 
-- 表示开启动态分区功能

set hive.exec.dynamic.partition.mode = nonstrict;
-- 表示允许所有分区都是动态的,否则必须有静态分区字段

3.下面为Hive动态分区参数:

set  hive.exec.max.dynamic.partitions.pernode=100; 
-- (默认100)表示每个maper或reducer可以允许创建的最大动态分区个数,默认是100,超出则会报错。

set hive.exec.max.dynamic.partitions =1000;
-- (默认1000)表示一个动态分区语句可以创建的最大动态分区个数,超出报错

set hive.exec.max.created.files =10000
-- (默认10000) 全局可以创建的最大文件个数,超出报错。

4.接下来,新建一个Hive表:

-- 普通不分区的Hive表
CREATE TABLE table_part(
field1 string,
field2 string,
time string
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY "\t";


-- 动态分区
CREATE TABLE table_part(
field1 string,
field2 string
)
PARTITIONED BY (time string)
ROW FORMAT DELIMITED FIELDS TERMINATED BY "\t";

 其中,我们注意到,分区字段写在PARTITIONED BY中,在建表字段中就不用写了,这样建之后,time字段是补在最后面的。

5.查看表分区信息:

show partitions table_part;

6.删除表分区:

alter table table_part drop partition (time='2019-02');

7.查询分区数据:

select field1, field2 , time from table_part 
where time='2019-02';


-- 分区显示数据
select  field1, field2 , time from table_part distribute by time;

8.插入数据到分区表:

insert into table table_part partition(time)
select field1 , field2 , time from table;

-- 注:select 子句最后一列要为分区表的分区列

 

部分参考:

1.https://blog.csdn.net/zwjzqqb/article/details/79022251

2.https://blog.csdn.net/qq_26442553/article/details/80382174

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值