一:简介
分桶规则:对分桶字段值进行哈希,哈希值除以桶的个数求余,余数决定了该条记录在哪个桶中,也就是余数相同的在一个桶中。
分桶语法:创建表时使用clustered子句指定要分桶的字段和分桶的数量,也可以指定排序。
clustered by(字段名) sorted by (排序字段) into 数量 buckets
hive分桶作用:
- 方便抽样:在处理大规模数据集时,在开发和修改查询的阶段,如果能在数据集的一小部分数据上试运行查询,会带来很多方便。
- 提高join查询效率: 对于JOIN操作两个表有一个相同的列,如果对这两个表都进行了桶操作。那么将保存相同列值的桶进行JOIN操作就可以,可以大大减少JOIN的数据量。
二:示例
1. 创建分桶表
create table tbl_bucket(id bigint, name string)clustered by(id) sorted by (id) into 4 bucketsrow format delimitedfields terminated by ","lines terminated by "";
2. 准备测试数据
echo "1,name12,name23,name34,nam