mapper中的中间文件(Mapreduce)

时间:2015-03-02 15:42:19

标签: hadoop mapreduce

所以我在这个Hadoop世界中是新手,我试图了解地图绘制器和减速器是如何工作的,我的问题(和问题)是:

我有一个很长的映射器,在生成[key,value]对之前需要生成一些中间文件。例如,在整个映射器中:文件A和B作为输入,我需要一个输出文件E,其中包含一些无法减少的中间文件。

file A -> file C
file B -> file D
file C + file D -> file E

是否有可能实现这一目标?中间文件是否留在节点中?

1 个答案:

答案 0 :(得分:1)

这在传统上是不可能实现的。 但有两种方法是可能的:

  • 从每个映射器中,您可以创建&写入HDFS上的文件。请注意,因为根据输入数据的大小/否。文件可能有许多并行运行的映射器,因此文件名必须是唯一的。
  • 更好的方法:从mapper发出一个复杂的键用于reducer。这个复杂的密钥有两部分: IdentifierOfKey:Key 。 IdentifierOfKey只是一个标志,表示此记录需要转到文件E.现在在reducer中,您可以使用多个输出将数据转换为多个文件。