大表 join 小表:
分析性能不好的原因:
大表 join 小表其底层采用的是 mapReduce 计算,在默认无优化的情况下,会伴随数据大表和小表的数据一同进入 reduce 阶段,进行计算,这时往往数据移动量比较大,造成 IO 效率和 IO 压力比较大,使得计算效率下降
解决的办法:MapJoin 机制策略
使用 MapJoin 机制策略,这是专门解决大表和小表 join 的最有效策略。
该策略的运行原理:1. 顾名思义,在 map 端就进行 join 操作;
2. 将小表的数据移动到大表所在的机器上,从而完成大表数据不移动的前提下,跟小表数据进行 join 计算。
该策略的注意事项:
小表数据多小算小?(两个核心参数要注意)
hive.auto.convert.join 默认为 true
hive.mapjoin.smalltable.filesize 默认为 25000000 即为 25M
大表 join 大表