Hive-分区、分桶

Hive Select查询一般会扫描整个表的内容,这样的话会消耗很多时间。有时候只需要扫面表中我们需要的一部分数据,因此建表的时候引入了partition,分区表的概念。分区是以字段的形式在表结构中存在,但是该字段不存放实际的数据内容,也可以理解为一种特定的目录结构。
对于每一个表或者分区,hive又可以进一步组织成桶,也就是说桶是更为细粒度的数据范围划分。hive采用对列值哈希,然后除以桶的个数求余的方式决定该条记录存放在哪个桶当中。

1.Hive分区

CREATE TABLE part_table(id int,name String,ip String,city String,date String)
PARTITIONED BY (part_flag String)//这里的分区字段可以是表中字段也可以是指定的字段
ROW FORMAT DELIMITED FIELDS TERMINATED BY ',';

load data local inpath '/home/xudong/test.txt' into table part_table partition(part_flag='part1');
load data local inpath '/home/xudong/test1.txt' into table part_table partition(part_flag='part2');

select * from part_table where part_flag='part1';
load data local inpath '/home/xudong/test.txt' into table part_table partition(part_flag='part1');
load data local inpath '/home/xudong/test1.txt' into table part_table partition(part_flag='part2');

这里的分区类似一种目录结构:
将test.txt文件导入hive表part_table中分区是part1,将test1.txt文件导入hive表part_table中分区是part2,目录结构显示是:
/user/hive/warehouse/xudong.db/part_table/part1/test.txt
/user/hive/warehouse/xudong.db/part_table/part2/test1.txt

2.hive分桶

CREATE TABLE part_table(id int,name String,ip String,city String,date String)
CLUSTERED BY (id) INTO 4 BUCKETS;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值