This commit is contained in:
qtmuniao 2023-12-14 20:44:43 +00:00 committed by GitHub
parent d349cb36e5
commit b805e64375
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -385,11 +385,11 @@ reduce 侧的连接的好处在于,你不需要对输入数据有任何的假
如,设想在图 10-2 对应的场景中,用户资料数据足够小,能够装入内存。在这种情况下,当 Mapper 启动时可以先将用户资料分布式文件系统中读取到内存的哈希表中。一旦加载完毕mapper 可以扫描所有的用户活动事件,对于每一个事件,在内存哈希表中查找该事件对应用户资料信息,然后连接后,输出一条数据即可。
但仍然会有多个 Mapper 任务join 的**大数据量输入侧**(在 10-2 中,用户活动事件表是大输入)每个文件块一个 mapper。其中 MapReduce 任务中的每个 Mapper 都会将小输入侧的数据全部加载进内存。
但仍然会有多个 Mapper 任务join 的**大数据量输入侧**(在 10-2 中,用户活动事件表是大输入)每个文件块一个 mapper。其中 MapReduce 任务中的每个 Mapper 都会将小输入侧的数据全部加载进内存。
这种简单高效的算法称为**广播哈希连接**broadcast hash joins
1. **广播broadcast**:处理大数据测每个分片的 Mapper 都会将小数据测数据全部载入内存。从另外一个角度理解,就是将小数据集**广播到了**所有相关 Mapper 机器上。
1. **广播broadcast**:处理大数据侧每个分片的 Mapper 都会将小数据侧数据全部载入内存。从另外一个角度理解,就是将小数据集**广播到了**所有相关 Mapper 机器上。
2. **哈希hash**:即在将小数据集在内存中组织为哈希表。
Pigreplicated join、HiveMapJoin、Cascading 和 Crunch 都支持这种连接方法。