HDFS优化
MapReduce优化
MapReduce中实现Join操作
Map join:适合小文件和大文件的join
Join过程发生在Map端
每个Map task都可以直接读取到小文件内容 与大文件的每一个块进行join.
分布式join
小文件:文件大小 < 1个块的大小
Reduce join
join过程发生在Reduce
目标数据:
map端
读取2个文件,打标签,2个文件有主外键关系
shuffle
主键为key,剩余值为value
reduce端
判定每一条记录,
先取出标签的数据:只有一条
然后取出剩余数据,进行字符串拼接
Semi join:Map和Reduce都有
(1)将不需要join的数据在Map端直接过滤掉
将主表A中所有ID放入缓存(分布式缓存)
取出B表的每个Id,判定B的id是在分布式缓存中存在,如果不存在,直接过滤掉
(2)reduce 端join