Python 如何组合hadoop映射器输出以获得单个结果

Python 如何组合hadoop映射器输出以获得单个结果,python,hadoop,mapreduce,Python,Hadoop,Mapreduce,我有大约170GB的数据。我必须使用hadoop 2.7.3进行分析。有14名工人。我必须找到每个文档的唯一MIME类型的总数,例如文本/html类型的文档总数。当我运行用python编写的mapreduce JobWrite时,Hadoop会返回许多输出文件,而不是我期望的单个输出文件。我认为这是由于许多工人单独处理一些数据并给出输出。我想得到单输出。问题在哪里。如何通过组合所有小输出文件来限制hadoop提供单一输出。您的工作是为每个映射器生成一个文件,您必须使用一个reducer强制red

我有大约170GB的数据。我必须使用hadoop 2.7.3进行分析。有14名工人。我必须找到每个文档的唯一MIME类型的总数,例如文本/html类型的文档总数。当我运行用python编写的mapreduce JobWrite时,Hadoop会返回许多输出文件,而不是我期望的单个输出文件。我认为这是由于许多工人单独处理一些数据并给出输出。我想得到单输出。问题在哪里。如何通过组合所有小输出文件来限制hadoop提供单一输出。

您的工作是为每个映射器生成一个文件,您必须使用一个reducer强制reducer阶段来完成此操作,您可以在所有映射器中发出相同的键来完成此操作

您的任务是为每个映射器生成1个文件,您必须使用1个reducer强制一个reducer阶段来执行此操作,您可以在所有映射器中发出相同的键来完成此操作

从hdfs检索数据时,可以使用hadoop getmerge命令合并结束文件:

hadoop fs -getmerge /output/reduce/ /localcatalog/mergedresult.txt

每个映射器和还原器将生成一个单独的文件,通过减少映射器和还原器的数量,您将降低作业的并行度。我认为最好的方法是使用提供的命令从hdfs获取合并结果,而不是将reducer限制为单个输出。

从hdfs检索数据时,可以使用hadoop getmerge命令合并结束文件:

hadoop fs -getmerge /output/reduce/ /localcatalog/mergedresult.txt

每个映射器和还原器将生成一个单独的文件,通过减少映射器和还原器的数量,您将降低作业的并行度。我认为最好的方法不是将reducer限制为单个输出,而是使用提供的命令从hdfs获得合并结果。

使您的映射器为每个已处理的文档发出-doc mime类型,1然后在reduce阶段计算所有这类对。本质上,这是一个标准的字数计算练习,除了映射器为每个文档的mime类型发出1之外


关于要设置的还原器数量:Alex合并还原器结果的方法更可取,因为它允许在还原阶段利用所有工作节点。然而,若作业要在1-2个节点上运行,那个么只有一个缩减器可以正常工作。

使映射器为每个已处理的文档发出-doc mime类型,1然后在缩减阶段计算所有这类对。本质上,这是一个标准的字数计算练习,除了映射器为每个文档的mime类型发出1之外


关于要设置的还原器数量:Alex合并还原器结果的方法更可取,因为它允许在还原阶段利用所有工作节点。但是,如果作业要在1-2个节点上运行,则只有一个减速器可以正常工作。

您可以设置setNumReduceTask1以获得单个输出,我相信您可以更具体一些吗?所需的输出格式是什么样的?您得到的输出是什么?您可以设置setNumReduceTask1以获得单个输出,我相信您可以更具体一些吗?所需的输出格式是什么样的?您得到的输出是什么?我认为合并将导致重复,例如,每个输出文件中都存在一个键文本/html。在最终输出中,它应该是所有数据的总和。@Shafiq您将不会有重复数据,因为Reducer将按键对数据进行分组,并在Reducer作业中按顺序分发这些数据。因此,您将拥有无任何重复项的非相交范围。getmerge将把它们合并成一个文件。@Shafiq Alex的答案对于当前的问题陈述是正确的。你的评论与原来的问题不同。我必须找到每一个文档的唯一MIME类型的总数不是clearBrother让我用一些原型来验证这一点。然后我会接受我认为合并会导致重复,例如,每个输出文件中都会存在一个关键字文本/html。在最终输出中,它应该是所有数据的总和。@Shafiq您将不会有重复数据,因为Reducer将按键对数据进行分组,并在Reducer作业中按顺序分发这些数据。因此,您将拥有无任何重复项的非相交范围。getmerge将把它们合并成一个文件。@Shafiq Alex的答案对于当前的问题陈述是正确的。你的评论与原来的问题不同。我必须找到每一个文档的唯一MIME类型的总数不是clearBrother让我用一些原型来验证这一点。那我就接受了