Hive的分区

一.Hive分区的概念

分区的目的:避免全表扫描,加快查询速度!

把大的文件切割划分成一个个的小的文件,这样每次操作一个个小的文件就会很容易了

创建单分区表:

CREATE TABLE IF NOT EXISTS t_student ( sno int, sname string ) partitioned by(grade int) row format delimited fields terminated by ','; -- 分区的字段不要和表的字段相同。相同会报错error10035 1,xiaohu01,1 2,xiaohu02,1 3,xiaohu03,1 4,xiaohu04,1 5,xiaohu05,1 6,xiaohu06,2 7,xiaohu07,2 8,xiaohu08,2 9,xiaohu09,3 10,xiaohu10,3 11,xiaohu11,3 12,xiaohu12,3 13,xiaohu13,3 14,xiaohu14,3 15,xiaohu15,3 16,xiaohu16,4 17,xiaohu17,4 18,xiaohu18,4 19,xiaohu19,4 20,xiaohu20,4 21,xiaohu21,4 -- 载入数据 -- 将相应年级一次导入 load data local inpath '/usr/local/soft/bigdata29/grade1.txt' into table t_student partition(grade=1); load data local inpath '/usr/local/soft/bigdata29/grade2.txt' into table t_student partition(grade=2); load data local inpath '/usr/local/soft/bigdata29/grade3.txt' into table t_student partition(grade=3); load data local inpath '/usr/local/soft/bigdata29/grade4.txt' into table t_student partition(grade=4); -- 演示多拷贝一行上传,分区的列的值是分区的值,不是原来的值

注:当表中分区关键字的数据不对时,仍会加载到分区文件当中,select出来的数据会是分区关键字的数值

但是HDFS中文件的数据不会改变,只是查询出来的数据会改变

静态多级分区:

CREATE TABLE IF NOT EXISTS t_teacher ( tno int, tname string ) partitioned by(grade int,clazz int) row format delimited fields terminated by ','; --注意:前后两个分区的关系为父子关系,也就是grade文件夹下面有多个clazz子文件夹。 1,xiaoge01,1,1 2,xiaoge02,1,1 3,xiaoge03,1,2 4,xiaoge04,1,2 5,xiaoge05,1,3 6,xiaoge06,1,3 7,xiaoge07,2,1 8,xiaoge08,2,1 9,xiaoge09,2,2 --载入数据 load data local inpath '/usr/local/soft/bigdata19/hivedata/teacher_1.txt' into table t_teacher partition(grade=1,clazz=1);

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值