Hadoop MapReduce Streaming小实验:单词计数

来源:互联网 发布:从零开始学淘宝开店 编辑:程序博客网 时间:2024/05/16 00:57

Hadoop MapReduce Streaming小实验:单词计数

 

输入:单词列表文件,里边的部分单词会重复,每个单词以换行分开。

good

sun

apple

sun

……

 

mapper程序:利用AWK脚本再每个单词后边添加TAB和“1”。此时,单词是key,数字“1”是value,代表单词出现了一次,keyvalue之间用tab分开。

#!/usr/bin/awk -f

{printf("%s\t1\n", $0)}

 

map阶段的输出:
good
  1

Sun  1

apple  1

Sun  1

 

shuffle阶段后的ruduce输入:
apple  1

good 1

sun 1

sun 1

 

reducer程序:利用awk脚本将每个单词后边的value累加,并作为该单词的出现次数输出。

#!/usr/bin/awk -f

BEGIN {FS="\t"}

{count[$1]=count[$1]+$2;

}

END {

for (onein count) print one "\t" count[one]

}

 

hadoop任务执行命令:此处利用了hadoopstreaming。

hadoop jar/usr/lib/hadoop-mapreduce/hadoop-streaming.jar -input $IN -output $OUT -mappermap.awk -reducer reducer.awk -file map.awk reducer.awk

 

最终输出结果:

apple 1

good   1

sun   2

……