MapReduce-迭代Iterable <text>

时间:2018-06-29 17:10:13

标签: java mapreduce

我正在尝试解决mapreduce问题。目前,我有一个方法图以这种方式组织我的班级:

    MapResult:    
    <key , "YES">
    <key , "NO">
    <key , "NO">
    <key , "YES">

我要做的是验证在该组的偶数条目中是否至少有一个“是”值,在该组的奇数条目中是否至少有一个“是”值。简而言之,如果MapResult [0] ==“ YES” && MapResult [3] == YES,我的条件就成立。

这是我为reduce任务需要完成的代码:

public static class IntSumReducer
       extends Reducer<Text,Text,Text,Text> {
    private IntWritable result = new IntWritable();

    public void reduce(Text key, Iterable<Text> values,
                       Context context
                       ) throws IOException, InterruptedException {

      for (Text value : values) {
        // Iteration on this values
      }

      //context.write();
    }
  }

1 个答案:

答案 0 :(得分:0)

您可以遍历可迭代对象并“翻转”偶数和奇数元素的检查:

布尔结果=假; boolean evenFound = false; 布尔奇数发现=假; boolean checkEven = true;

for (Text value : values) {
   if (checkEven) {
       evenFound |= "YES".equals(value);
   } else {
       oddFound |= "YES".equals(value);
   }

   if (evenFound && oddFound) {
       result = true;
       break;
   }

   checkEven = !checkEven;
}