[Hadoop]MapReduce中的Join

摘自象书

首先,最好用Pig/Hive等做Join,避免手写很多代码

如果不用Pig/Hive,则有两种选择(假设有两个dataset, A和B):

1.Map-Side Joins

  比较复杂,可以参见 org.apache.hadoop.examples.Join

2.Reduce-Side Joins

  a.使用MultipleInputs将两个dataset都读进来,作为同一个Job的输入

  b.两个dataset的mapper使用相同的output key, 以使两个mapper中key相同的output将出现在同一个reducer上 (严格地讲不是同一个key, 这里要自建partitioner来钻个空子,详见象书英文版p251)

  c; 在reducer中实现Join逻辑

 

Leave a Comment

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.