我是hadoop的新手,目前正在从donald miner和adam Shaked的mapreduce设计模式书中学习mapreduce设计模式。所以在这本书中有笛卡尔积模式。我的问题是:
记录读取器何时向Map器发送数据?
将数据发送到mapper的代码在哪里?
我看到的是cartesianrecordreader类中的下一个函数在不发送数据的情况下读取两个split。
这是源代码https://github.com/adamjshook/mapreducepatterns/blob/master/mrdp/src/main/java/mrdp/ch5/cartesianproduct.java
仅此而已,提前谢谢:)
1条答案
按热度按时间huus2vyu1#
记录读取器何时向Map器发送数据?
让我给你一个关于mapper和recordreader是如何联系的想法来回答这个问题。这是将数据发送到Map器的hadoop代码。1
基本上,hadoop会调用
next
直到它回来false
,每次通话时key
以及value
将获得新值。Key
通常是到目前为止读取的字节value
文件中的下一行。将数据发送到mapper的代码在哪里?
这段代码在hadoop的源代码中(可能在mapcontextimpl类中),但它类似于我在代码段中编写的代码。
编辑:源代码位于maprunner。