我正在学习MapReduce。我正在尝试设置一个"连接"算法,该算法从两个文件(其中包含要连接的两个数据集(中获取数据。
为此,映射器需要知道每行来自哪个文件;这样,它可以适当地标记它,这样化简器就不会(例如(将一个数据集中的元素连接到同一集中的其他元素。
更复杂的是,我使用的是Hadoop Streaming,映射器和reducer是用Python编写的;我了解Java,但是Hadoop InputFormat和RecordReader类的文档非常模糊,我不明白如何进行与Streaming兼容的拆分,以便某种文件标识符可以与数据捆绑在一起。
谁能解释如何以我的 Python 程序可以理解的方式设置此输入处理?
便说一下,我找到了答案——在 Python 中,它是:
import os
context = os.environ["map_input_file"]
然后"上下文"具有输入文件名。