"合并MapReduce作业的输出文件"

2024-04-25 21:39:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我用Python编写了一个Mapper和Reducer,并使用Hadoop流媒体在Amazon的elasticmapreduce(EMR)上成功地执行了它。在

最终结果文件夹包含三个不同文件part-00000、part-00001和part-00002中的输出。但我需要输出为一个单独的文件。我有办法做到吗?在

这是我的映射程序代码:

#!/usr/bin/env python

import sys

for line in sys.stdin:
    line = line.strip()
    words = line.split()
    for word in words:
        print '%s\t%s' % (word, 1)

这是我的减速机代码

^{pr2}$

我需要这个输出作为一个单独的文件。在


Tags: 文件inhadoopamazonforsyslineword
3条回答

一种非常简单的方法(假设Linux/UNIX系统):

$ cat part-00000 part-00001 part-00002 > output

对小数据集/处理使用single reduce,或者对作业的输出文件使用getmerge选项。在

我对上述问题的解决方案是执行以下hdfs命令:

hadoop fs -getmerge /hdfs/path local_file

其中/hdfs/path是包含作业输出的所有部分(part-*****)的路径。 hadoopfs的-getmerge选项将把所有作业输出合并到本地文件系统上的单个文件中。在

相关问题 更多 >