赞
踩
将 key 相对分散,并且数据量小的表放在 join 的左边,可以使用 map join 让小的维度表先进内存。在 map 端完成 join。
实际测试发现:新版的 hive 已经对小表 JOIN 大表和大表 JOIN 小表进行了优化。小表放在左边和右边已经没有区别。
案例实操
1)需求介绍
测试大表 JOIN 小表和小表 JOIN 大表的效率
2)开启 MapJoin 参数设置
(1)设置自动选择 Mapjoin
set hive.auto.convert.join = true; 默认为 true
(2)大表小表的阈值设置(默认 25M 以下认为是小表):
set hive.mapjoin.smalltable.filesize = 25000000;
3)MapJoin 工作机制
4)建大表、小表和 JOIN 后表的语句
- // 创建大表
- create table bigtable(id bigint, t bigint, uid string, keyword string,
- url_rank int, click_num int, click_url string) row format delimited
- fields terminated by '\t';
-
- // 创建小表
- create table smalltable(id bigint, t
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。