hdfs下的WordCount示例编写
WordCount示例编写
需求:在一堆给定的文本文件中统计输出每一个单词出现的总次数
数据格式准备如下:
cd /export/servers
vim wordcount.txt
hello,hello
world,world
hadoop,hadoop
hello,world
hello,flume
hadoop,hive
hive,kafka
flume,storm
hive,oozie
把文件上传到hdfs上去:
hdfs dfs -mkdir /wordcount/
hdfs dfs -put wordcount.txt /wordcount/
编程模型:
第一步:读取文件,解析成key,value对。k1,v1
key是行偏移量,value是行文本内容
key value
0 hello,hello
11 world,world
22 hadoop,hadoop
第二步:自定义map逻辑,接收k1,v1,转换成新的k2,v2,输出。
拿到一行文本内容之后,按照逗号切割[hello,hello]
k1 v1
行偏移量 行文本内容
转换成
k2 v2
hello 1
hello 1
第三步:分区。相同key的数据发送到同一个reduce里面去。相同key合并,value形成一个集合。有默认值,暂时不用我们写了。
第四步:排序。不用写,有默认值。
第五步:规约。用不到,不用写。
第六步:分组。不用写,有默认值。
第七步:自定义reduce逻辑,接收k2,v2,转换成新的k3,v3,输出。
k2 v2
hello [1,1]
循环遍历集合,进行累加。最后输出。
k3 v3
hello 2
第八步:将数据输出
定义一个mapper类
package cn.itcast.mr.demo1;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop