HIVE 分桶模式

1.分桶之前要打开  hive.enforce.bucketiong=true;

2.分桶处理的对象必须是有,有效的列 , 比如我分了三个桶,针对id , 那么就是取id的hash值 , 然后分别放入三个不同之中 ,注意

-----不能指定数据存放在哪个桶 , 他自己会根据哪个列判断 , 你只需要保证传入的数据具有哪个列就好了.

其实有点类似于hashmap分区

1.创建分桶表

create table yask(id int,name string) clustered by(id) Row Format Delimited Fields Terminated By ‘\t‘;

注意: 这里面id是从前面拿出来得到 , 和分区独立开不一样 

2.插入数据

这里面插入数据是从select * from  里面插入的 , 而不是load进来的,因为需要指定列作为hash的依据

inset overwrite table yask select * from userinfo;

查看分桶信息

hive> dfs -ls /usr/hive/warehouse/yask

查询分桶的数据

select * from yask tablesample(bucket 1 out of 3 on id);
要制定关键字tablesample

相关推荐