所以我是Hadoop世界的新手,我正在努力了解映射器和还原器是如何工作的,我的问题是:
我有一个长映射器,在生成[key,value]对之前,需要生成一些中间文件。例如,在一个完整的映射器中:文件a和B作为输入,我需要一个带有一些无法减少的中间文件的输出文件E。
file A -> file C
file B -> file D
file C + file D -> file E
有可能存档这个吗?中间文件是否保留在节点中?
这是传统方法无法实现的。但有两种方法是可能的:
- 从每个映射器中,您可以创建&写入HDFS上的文件。请注意,由于根据输入数据的大小/文件的数量,可能有许多映射程序并行运行,因此文件名必须是唯一的
- 更好的方法:从reducer的mapper中发出一个复杂的键。这个复杂的密钥有两个部分:IdentifierOfKey:key。IdentifierOfKey只是一个标志,表示此记录需要转到文件E。现在在reducer中,您可以使用多个输出将数据获取到多个文件中