第七章_分桶表
1. 什么是分桶表
-- 根据指定的分桶字段 和 分桶数,将数据划分成 不同的数据文件
-- hash(分桶字段) % 分桶数 = 文件分桶编号
2. 分桶和分区的区别
-- 1. 分桶针对 数据文件进行 拆分
-- 分区针对 数据文件存储路径进行 拆分
-- 2. 分区字段 并不是数据文件的一部分
-- 分桶字段 是数据文件的一部分
3. 数据分桶的作用
1. 方便抽样
2. 提高join查询效率
4. 创建分桶表(分桶不排序)
create table home.ods_track_log_dd_no_sort ( log_id string comment '日志id', log_type string comment '日志类型', event_key string comment '用户行为表示') comment '后端日志表(天级)' clustered by(log_type) into 2 buckets row format delimited fields terminated by '\t' lines terminated by '\n' stored as Textfile; -- 插入数据set yarn.scheduler.maximum-allocation-mb=118784; set mapreduce.map.memory.mb=4096; set mapreduce.reduce.memory.mb=4096; set yarn.nodemanager.vmem-pmem-ratio=4.2; insert overwrite table home.ods_track_log_dd_no_sort select 10 as log_id,'展示' as log_type,'首页展示' as event_key union all select 3 as log_id,'点击' as log_type,'首页点击' as event_key union all select 2 as log_id,'展示' as log_type,'落地页展示' as event_key union all select 4 as log_id,'点击' as log_type,'首页结果页' as event_key union all select 6 as log_id,'点击' as log_type,'首页点击1' as event_key union all select 5 as log_id,'点击' as log_type,'首页点击2' as event_key; -- 查看结果 hadoop fs -cat /user/hive/warehouse/home.db/ods_track_log_dd_no_sort/000000_0 2 展示 落地页展示 10 展示 首页展示 hadoop fs -cat /user/hive/warehouse/home.db/ods_track_log_dd_no_sort/000001_0 5 点击 首页点击2 6 点击 首页点击1 4 点击 首页结果页 3 点击 首页点击
5. 创建分桶表(分桶排序)
create table home.ods_track_log_dd_sort ( log_id string comment '日志id', log_type string comment '日志类型', event_key string comment '用户行为表示') comment '后端日志表(天级)' clustered by(log_type) sorted by (log_id) into 2 buckets row format delimited fields terminated by '\t' lines terminated by '\n' stored as Textfile; -- 插入数据 set yarn.scheduler.maximum-allocation-mb=118784; set mapreduce.map.memory.mb=4096; set mapreduce.reduce.memory.mb=4096; set yarn.nodemanager.vmem-pmem-ratio=4.2; insert overwrite table home.ods_track_log_dd_sort select 10 as log_id,'展示' as log_type,'首页展示' as event_key union all select 3 as log_id,'点击' as log_type,'首页点击' as event_key union all select 2 as log_id,'展示' as log_type,'落地页展示' as event_key union all select 4 as log_id,'点击' as log_type,'首页结果页' as event_key union all select 6 as log_id,'点击' as log_type,'首页点击1' as event_key union all select 5 as log_id,'点击' as log_type,'首页点击2' as event_key; -- 查看结果 hadoop fs -cat /user/hive/warehouse/home.db/ods_track_log_dd_sort/000000_0 10 展示 首页展示 2 展示 落地页展示 hadoop fs -cat /user/hive/warehouse/home.db/ods_track_log_dd_sort/000001_0 3 点击 首页点击 4 点击 首页结果页 5 点击 首页点击2 6 点击 首页点击1