4.1.4 为你的数据选择最佳连接策略
已介绍的每个连接策略都有不同的优点和缺点。那么,怎么来判断哪个最适合待处理的数据?
图4.11给出了一个决策树。这个决策树是于论文《A Comparison of Join Algorithms》中提到的一个决策树的改进版本。
图4.11中的决策树可以归纳为以下三点:
- 如果数据集中有一个足够小到可以放到map的内存中,那么map端的复制连接就足够了。
- 如果每个数据集都很大,同时其中一个数据集可以在经过一定条件过滤以后大幅度地减小,那么半连接将会很有效。
- 如果你无法预处理你的数据,并且数据集大到不能够被缓存,那么就需要在reduce中使用重分区连接了。
由于MapReduce将map的输出键排序并关联到一起,这让在reduce端执行连接成为了可能。在下一个部分中,将介绍MapReduce的一般排序技术。