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 ' ';
注意: 这里面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