Map hadoop过滤映射输出

Map hadoop过滤映射输出,map,hadoop,mapreduce,Map,Hadoop,Mapreduce,我有一个用例,在映射阶段生成的某些键中,需要在reduce启动之前过滤掉。这样做可行吗?请告诉我。我想到了几个选项: 修改映射器以不输出要筛选的值 编写一个减速机,过滤掉不需要的值,并将该减速机的输出提供给另一个MapReduce作业 对于这个任务,使用组合器不是一个好的选择,因为正如@100gods所提到的,组合器的执行是不保证的 修改映射器类以过滤输入将更准确, 因为不能保证合并器的执行,所以Hadoop可能会也可能不会执行合并器。此外,如果需要,可以执行1次以上。因此,您的MapRed

我有一个用例,在映射阶段生成的某些键中,需要在reduce启动之前过滤掉。这样做可行吗?请告诉我。

我想到了几个选项:

  • 修改映射器以不输出要筛选的值
  • 编写一个减速机,过滤掉不需要的值,并将该减速机的输出提供给另一个MapReduce作业

对于这个任务,使用组合器不是一个好的选择,因为正如@100gods所提到的,组合器的执行是不保证的

修改映射器类以过滤输入将更准确,
因为不能保证合并器的执行,所以Hadoop可能会也可能不会执行合并器。此外,如果需要,可以执行1次以上。因此,您的MapReduce作业不应依赖于合并器的执行。

如果无法更改映射器的代码,他也可以使用合并器过滤掉值。谢谢!组合器似乎是更好的选择,因为我无法更改映射器代码。组合器?这个选择是不正确的。不能保证合并器代码会执行。如前所述,最好的选择是“不要发出需要过滤掉的键值对”。我在映射器中使用TextInputFormat,它一次只能读取一行。我想标记一个文件,如果在其中一行中发现了某种模式……但是,因为所有映射任务并行运行,所以在扫描所有行之前,我无法知道是否“标记”了某个特定文件。这就是我一直坚持的地方。你关于使用组合器的观点就是为什么我在回答中没有提到这些。我想我应该明确地说明这一点。