啥是分桶表?
主要是用于分文件的.在创建表的时候 .可以按照某个字段进行分桶操作.并且设置分为
多少个桶,这样在插入数据的时候.翻译后MR会将分桶字段的值作为k2.将分桶数量作为
MR的分区数量.进行划分为多个文件操作.
本质就是 MR的分区操作.
咋定义分桶表?
create table test_buck(id int, name string)
clustered by(id) sorted by (id asc) into 6 buckets -- 分桶设置
row format delimited fields terminated by '\t';
咋向分桶表插入数据?
栗子:
将一个文本文件插入到分桶表中
标准的插入逻辑
1 为这个分桶表建立一个临时表(不是分桶表)
2 通过load data 方式将数据加载到临时表中
3 通过 insert into 方式灌入到分桶表中,( insert才会执行MR 才会进行分桶 )
注意:
1 我们开发使用的hive(cdh)禁用了 load data到分桶表的操作.
set hive.strict.checks.bucketing = true; -- CDH限制对分桶表执行load操作
分桶表有啥用?
1 进行数据采样
栗: 数据质量检测
栗: 提高开发效率 (测试验证sql)
栗: 抽样指标计算
2 提高查询的效率(多表)