【问题标题】:How does RecordReader send data to mapper in HadoopRecordReader如何向Hadoop中的mapper发送数据
【发布时间】:2018-11-18 18:31:58
【问题描述】:

我是 Hadoop 新手,目前我正在从 Donald Miner 和 Adam Shook MapReduce 设计模式一书中学习 mapreduce 设计模式。所以在这本书中有笛卡尔积模式。我的问题是:

  1. 记录阅读器何时向映射器发送数据?
  2. 将数据发送到映射器的代码在哪里?

我看到的是 CartesianRecordReader 类中的下一个函数读取两个拆分而不发送数据。

这里是源代码https://github.com/adamjshook/mapreducepatterns/blob/master/MRDP/src/main/java/mrdp/ch5/CartesianProduct.java

就是这样,在此先感谢 :)

【问题讨论】:

    标签: hadoop mapreduce mapper recordreader


    【解决方案1】:

    记录阅读器何时向映射器发送数据?

    让我回答一下映射器和 RecordReader 之间的关系。这是发送数据的Hadoop代码 到映射器。 1

      RecordReader<K1, V1> input;
    
      K1 key = input.createKey();
      V1 value = input.createValue();
    
      while (input.next(key, value)) {
        // map pair to output
        mapper.map(key, value, output, reporter);
        if(incrProcCount) {
          reporter.incrCounter(SkipBadRecords.COUNTER_GROUP, 
              SkipBadRecords.COUNTER_MAP_PROCESSED_RECORDS, 1);
        }
      }
    

    基本上,Hadoop 将调用next 直到它返回false,并且每次调用keyvalue 都会获得新的值。 Key 通常是目前读取的字节,value 是文件中的下一行。

    将数据发送到映射器的代码在哪里?

    该代码位于 hadoop 的源代码中(可能在 MapContextImpl 类中),但它类似于我在代码 sn-p 中编写的内容。

    编辑:源代码在MapRunner

    【讨论】:

    • 嗯,读了一遍又一遍,终于明白了。非常感谢:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-30
    • 2013-09-15
    • 1970-01-01
    • 1970-01-01
    • 2015-10-29
    • 1970-01-01
    相关资源
    最近更新 更多