mapreduce top n
在最初接触mapreduce时,top n 问题的解决办法是将mapreduce输出(排序后)放入一个集合中,取前n个,但这种写法过于简单,内存能够加载的集合的大小是有上限的,一旦数据量大,很容易出现内存溢出。 今天在这里介绍另一种实现方式,当然这也不是最好的方式,不过正所谓一步一个脚印,迈好每一步,以后的步伐才能更坚定,哈哈说了点题外话。恩恩,以后还会有更好的方式 需求,得到top 最大的前n条记录 这里只给出一些核心的代码,其他job等配置的代码略 Configuration conf = new Configuration(); conf.setInt("N", 5); 初始化job之前需要 conf.setInt("N",5); 意在在mapreduce阶段读取N,N就代表着top N 以下是map package com.lzz.one; import java.io.IOException; import java.util.Arrays; import org.apache.hadoop.io.IntWritable; import org.apache.hadoop.io.LongWritable; import org.apache.hadoop.io.Text; import org.apache.hadoop.mapreduce.Mapper; /** *