Spark词频统计测试

数据:中华书局白话版24史,总计大小93M,已经存放到HDFS集群
Spark词频统计测试_第1张图片

分析语言:python
分析框架:Spark 1.6.0
第三方包:jieba(结巴分词)
可视化工具:D3.JS

源代码:
from  pyspark import SparkConf, SparkContext
import jieba,Wordfilter,datetime,WordCloud,webbrowser
from operator import add

def splitWord(line):
    seg_list = jieba.cut(line, cut_all=True)
    return seg_list

if __name__ =="__main__":
     conf = SparkConf().setMaster("spark://server1.com:7077").setAppName("App %s"%datetime.datetime.now())
    sc = SparkContext(conf = conf)
    lines = sc.textFile("hdfs://server1.com:8020/data/txt/24.txt")
    counts = lines.flatMap(lambda x: splitWord(x)).map(lambda x: (x, 1)).reduceByKey(add)
    output = counts.collect()
    wcount = []
    for (word, count) in output:
        if len(word) > 2 and count > 10:
            if Wordfilter.wfilter(word):
                tup= (word,count)
                wcount.append(tup)



    sortCount = sorted(wcount,key=lambda wc:wc[1],reverse=True)
    file = "/home/hadoop/Documents/out/24.txt"
    wf = open(file,"w")
    for (w,c) in sortCount:
        wc = "%s = %s\n"%(w,c)
        wf.write(wc.encode("utf-8"))
        print(wc)
    wf.close()

    startTime = datetime.datetime.now().strftime('%Y%m%d%H%M%S%f')
    html = r"/home/hadoop/Documents/out/d3cloudmaster/examples/" + str(startTime) + ".html"
    s = WordCloud.procTextFile(file)
    WordCloud.createWordCloudHTML(s, html)

    sc.stop()
    webbrowser.open(html)


PS:此源代码过滤部分和可视化部分在另外的文件里面,需要的可以通过公众号邮箱获取。

分析结果:
Spark词频统计测试_第2张图片


排名前100位的词频,进行词云可视化:

Spark词频统计测试_第3张图片

历史科普:

节度使官衔始于唐初,到元代被废止。

历史上有记载的第一个被授予节度使称号的是唐睿宗(武则天的儿子)时期的左武卫大将军兼幽州都督薛讷,他也是大名鼎鼎的薛仁贵的儿子。

从这张图上看,24史中,着墨最多的时代,就是唐宋两朝。

想了解这些技术后面更多的东西么?5月26、27日开发者大会见。

你可能感兴趣的:(大数据,数据分析,历史)