第七章_分桶表

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

 

 

 

 
posted @ 2022-01-29 18:30  学而不思则罔!  阅读(230)  评论(0)    收藏  举报