hive的动态分区表的创建及数据的导入

动态分区流程:
①建一个动态分区表
②建一个临时表(分区字段作为临时表的表内字段)
③将数据导入临时表中
④根据临时表中的数据含有的动态分区字段的值进行数据加载并
动态分区

-- 设置属性
set hive.exec.dynamic.partition.mode=nonstrict;   <----非严格模式下可以都是动态分区,而严格模式下必须至少有一个静态分区
set hive.exec.dynamic.partition=true; 开启动态分区

-- 创建动态分区表student
drop table if exists student;
create table if not exists student
(
    id int,
    name string
)
partitioned by (age int)
row format delimited fields terminated by ','
;
-- 创建临时表
drop table if exists temp;
create table if not exists temp
(
    id   int,
    name string,
    age int
)
row format delimited fields terminated by ','
;
-- 准备一个文件,含有临时表中的所有字段数据,data.txt,该文件在linux文件系统中
1,zhangsan,15
2,lisi,16
3,wangwu,20
4,hanmeimei,50
5,liufang,20
6,wuting,15
7,dafang,30
8,shiba,10
9,chifan,12
10,kuishi,12

-- 将数据导入到临时表中
load data local inpath '/root/data.txt' into table temp;

-- 查看数据是否成功导入临时表中
select * from temp;

在这里插入图片描述

-- 如果相在idea上运行的快一些,就设置为本地模式
set hive.exec.mode.local.auto=true;

-- 将临时表中的数据导入到动态分区表中,并根据分区字段的值自动进行数据的分区
insert into table student partition(age) select id,name,age from temp;

-- 查看动态分区表中是否成功导入数据并分区
select * from student;

---->可以看到查询结果已经按照年龄进行分区了
在这里插入图片描述
分区其实就是将表中数据分目录进行存储,可以提高查询效率。
在hdfs文件系统中可以看到student表下有很多age=值的目录。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值