hive的动态分区

hive的动态分区

动态分区
是在创建好的普通表的基础上,设定某个字段为分区字段,提高条件查询的效率!
步骤

先创建一个普通表
然后再创建一个动态分区表
开启动态分区的各种设置
设置好动态分区的字段,
数据自动按照设定的字段自己创建目录并分开导入数据了

2.1 动态分区的相关属性:

set hive.exec.dynamic.partition=true //使用动态分区
set hive.exec.dynamic.partition.mode=nonstrick;//无限制模式,如果模式是strict,则必须有一个静态分区且放在最前面
set hive.exec.max.dynamic.partitions.pernode=10000;//每个节点生成动态分区的最大个数
set hive.exec.max.dynamic.partitions=100000;//生成动态分区的最大个数
set hive.exec.max.created.files=150000;//一个任务最多可以创建的文件数目
set dfs.datanode.max.xcievers=8192;//限定一次最多打开的文件数
set hive.merge.mapfiles=true; //map端的结果进行合并
set mapred.reduce.tasks =20000;  //设置reduce task个数

数据

xiaoming math 98
xiaohong math 95
xiaoming math 98
xiaokong math 95
xiaoming math 98
xiaokang math 96

创建一张普通表并导入数据

create table if not exists day_part2(
name  string,
course  string,
grade  int
)
row format delimited fields terminated by ' ';
load data local inpath '/root/student.txt' into table day_part2;

然后再创建分区表

create table dy(
name  string,
course  string,
grade  int
)partitioned by (grades int)
row format delimited fields terminated by ' ';

使用动态分区

set hive.exec.dynamic.partition=true;

开启无限模式

set hive.exec.dynamic.partition.mode=nonstrick;

导入数据的时候很重要哦!!
加载数据,注意select的时候要多一个字段,这个字段对应的就是分区字段!(括号内的分区字段要对应建表时候的分区字段)

insert  into table dy partition (grades)
select name,course,grade,grade from day_part2;

最终就会根据这个字段数据的分区创建自己的目录

在这里插入图片描述

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值