Java 如何使用mapreduce wordcount的输出进行进一步处理?

Java 如何使用mapreduce wordcount的输出进行进一步处理?,java,hadoop,mapreduce,Java,Hadoop,Mapreduce,我已经做了一个map reduce wordcount程序,现在我想使用输出(每个单词的字数),我想从中统计前5个关键字。如何使用阶段1的输出进入阶段2,我应该运行另一个作业吗 您当然可以从first的输出中写入另一个作业 将您的任务分为两个步骤: 步骤1:字数统计 第二步:前n个单词 在第2步中,设置一个并确保您有一个减速机(job.setNumReduceTasks(没有减速机);),然后在减速机中,您可以跟踪topN并在最后发出它们,为此,您需要一个减速机 您还可以编辑Step1本身,使其

我已经做了一个map reduce wordcount程序,现在我想使用输出(每个单词的字数),我想从中统计前5个关键字。如何使用阶段1的输出进入阶段2,我应该运行另一个作业吗

您当然可以从first的输出中写入另一个作业

将您的任务分为两个步骤: 步骤1:字数统计 第二步:前n个单词

在第2步中,设置一个并确保您有一个减速机(
job.setNumReduceTasks(没有减速机);
),然后在减速机中,您可以跟踪topN并在最后发出它们,为此,您需要一个减速机


您还可以编辑Step1本身,使其只有一个减缩器,并跟踪topN单词,最后发出它们。但是如果你有很多单词,那么这种方法比两个单独的步骤更耗时。

或者,代替身份映射器,用值反转键,这样计数就是键,单词就是值。Hadoop将在reduce阶段对它们进行排序,您可以只保留最上面/最下面的n个字(同样使用单个reducer)。