通过Mapper输出键的最左边两位执行reducers

时间:2016-09-15 19:36:00

标签: hadoop mapreduce

我正在使用Apache MapReduce来解析原始数据并将其加载到数据库中。

My Mapper从文本文件中解析原始数据行 - 每行获取一个唯一的数字ID(键)和一组键值对(值)。

我的Reducer为每个行ID保存数据库中的键值对。

我想通过最左边的两位数字对线路ID进行分组 - 以便减速器将处理以10开头,然后是11,12等的ID。 在处理以11开头的IDS的所有Reducer完成之前,我不希望任何Reducer在以12开头的ID上运行。

可以使用Apache MapReduce实现吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

根据我的理解,您可以为每个ID 10,11,12确定减速器的数量和一个减速器。但是,由于Map Reduce是为并行处理而设计的,因此我们无法让12等待11,我们无法做到具有基于数据的依赖性与单个地图减少作业。

您可能会尝试多个MAP减少作业。

  1. MAP ONLY JOB,每个ID有1个输出
  2. 手动安排您的减速机或以JOb方式Oozie它们 process 11 Ids在处理12个Ids的JOb之前运行。
  3. 希望它能给出一条出路。