MapReduce特性(三) 连接-Join DataSets

把Join作为实现的核心部分的高级框架:Pig Hive Cascading Cruc Spark

连接操作取决于数据集的规模和分区方式

1 如果其中一个数据集很小,可以分发到各个MR节点上连接

2 如果两个数据集都很大,需要考虑如何使用map端连接和reduce端连接

mapper执行连接称为 mapper端连接

reducer执行连接称为reduce端连接


map端连接

数据到达map函数之前连接

    > 输入数据必须先分区并且以特定方式排序

    > 输入数据集划分成相同数量的分区,按照相同的键排序

    > 同一个键的所有记录放在一个分区中

使用CompsiteInputFormat运行map端连接

org.apache.hadoop.examples.Join中有一个程序样例


reduce端连接

不要求输入集合特定结构,更常用

    > 两个数据集都需要经过shuffle,效率低些

    > mapper为记录标记源,使用连接键作为map输出键,键相同则输出到同一个reducer

1 多输入

    MultipleInputs

2 辅助排序

    reducer选出不同数据源中键相同的记录,不保证记录是有序的,一般是将一个源的数据排列在另一个源数据之前。

    使用辅助排序协助完成




猜你喜欢

转载自blog.csdn.net/weixin_42129080/article/details/80811007
今日推荐