分桶
单个分区或者表中的数据越来越大,分区不能细粒度的划分数据时,可以采用分桶去实现,
分桶是将数据集分解为更容易管理的若干部分的另一种技术
分桶的技术:
CLUSTERED BY (col_name, col_name, ...)
[SORTED BY (col_name [ASC|DESC], ...)] INTO num_buckets BUCKETS]
分桶的原理:
跟MR的hashpartitioner是一样的
MR中:key的hash值模上reduce数量
hive中:按照分桶字段的hash值模上分桶的个数
hive也是针对某一列进行桶的组织,hive采用对列值进行hash,然后模上分桶的个数求余数决定记录存放在哪儿个桶中
分桶的意义
1、为了保存分桶查询的分桶结构(数据已经按照分桶字段进行了hash散列)
2、分桶表进行抽样和join操作时可以提高MR的查询效率