首先来推荐相关材料:。小虾的这个统计武侠小说人名热度的段子很有意思,照虎画猫来实践一下。
与其不同的地方有:
0)其使用Hadoop Streaming,这里使用MapReduce框架。
1)不同的中文分词方法,这里使用IKAnalyzer,主页在。
2)这里的材料为《射雕英雄传》。哈哈,总要来一些改变。
0)使用WordCount源代码,修改其Map,在Map中使用IKAnalyzer的分词功能。
import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.Reader;import java.io.ByteArrayInputStream;import org.wltea.analyzer.core.IKSegmenter;import org.wltea.analyzer.core.Lexeme;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.fs.Path;import org.apache.hadoop.io.IntWritable;import org.apache.hadoop.io.Text;import org.apache.hadoop.mapreduce.Job;import org.apache.hadoop.mapreduce.Mapper;import org.apache.hadoop.mapreduce.Reducer;import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;import org.apache.hadoop.util.GenericOptionsParser;public class ChineseWordCount { public static class TokenizerMapper extends Mapper
1)So,完成了,本地插件模拟环境OK。打包(带上分词包)扔到集群上。
hadoop fs -put chinese_in.txt chinese_in.txthadoop jar WordCount.jar chinese_in.txt out0...mapping reducing...hadoop fs -ls ./out0hadoop fs -get part-r-00000 words.txt
2)数据后处理:
2.1)数据排序
head words.txttail words.txtsort -k2 words.txt >0.txthead 0.txttail 0.txtsort -k2r words.txt>0.txthead 0.txttail 0.txtsort -k2rn words.txt>0.txthead -n 50 0.txt
2.2)目标提取
awk '{if(length($1)>=2) print $0}' 0.txt >1.txt
2.3)结果呈现
head 1.txt -n 50 | sed = | sed 'N;s/\n//'
1郭靖 64272黄蓉 46213欧阳 16604甚么 14305说道 12876洪七公 12257笑道 12148自己 11939一个 116010师父 108011黄药师 105912心中 104613两人 101614武功 95015咱们 92516一声 91217只见 82718他们 78219心想 78020周伯通 77121功夫 75822不知 75523欧阳克 75224听得 74125丘处机 73226当下 66827爹爹 66428只是 65729知道 65430这时 63931之中 62132梅超风 58633身子 55234都是 54035不是 53436如此 53137柯镇恶 52838到了 52339不敢 52240裘千仞 52141杨康 52042你们 50943这一 49544却是 47845众人 47646二人 47547铁木真 46948怎么 46449左手 45250地下 448
在非人名词中有很多很有意思,如:5说道7笑道12心中17只见22不知30这时49左手。