在Hadoop中进行简单的词频统计
1.建立WCMapper
代码如下:
import java.io.IOException;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;
public class WCMapper extends Mapper<LongWritable, Text, Text, LongWritable> {
@Override
protected void map(LongWritable k1 , Text v1,Context context)
throws IOException,InterruptedException{
//1.进行行偏移量内容反序列化
String line=v1.toString();
//2.通过空格分隔每行单词
String[] words = line.split(" ");
//3.通过遍历数组将k1,v1,变成k2,v2
for (String w : words) {
context.write(new Text(w), new LongWritable(1));
}
}
}
说明:
k1,v1转变成k2,v2,通过的是进行数组遍历,将每一行的单词分开并统计,由于没有合并,故new LongWritable(1),即每个单词一个并序列化写入。
Context:
用来传递数据以及其他运行状态信息,map中的k1,v1写入context,让它传递给Reducer进行reduce(k3,v3)&#x