如何在MapReduce中处理大型文件,其中一个记录依赖于另一个记录

时间:2015-09-21 10:44:19

标签: hadoop mapreduce

我有一个场景,其中有一个非常大的文件,并说第1行记录可能依赖于第1000行数据,第1行和第1000行可以是单独的spilts的一部分。现在我对该框架的理解是,记录阅读器将向映射器返回一个键值对,并且每个k,v对将独立于另一个。此外,由于文件已被分为分裂,我也想要(即splittable false是没有选项),我能处理这个,无论如何可能会写我自己的记录阅读器,映射器或减速器吗?

依赖就像 -

第1行:a,b,c,d,e,f

第2行:x,y,z,p,q,r

现在,Row2中的x需要与Row1中的d一起使用才能得到我想要的输出。

感谢。

1 个答案:

答案 0 :(得分:0)

我认为您需要实现 reducer side join 。在这里,您可以看到更好的解释:http://hadooped.blogspot.mx/2013/09/reduce-side-joins-in-java-map-reduce.html

两个相关值必须以相同的reducer(由键和 Partitioner 定义)结束,并且它们应该组合在一起( GroupingComparator )并且可以使用 SecondSort 可以对分组值进行排序。