0
点赞
收藏
分享

微信扫一扫

Spark词频统计测试

数据:中华书局白话版24史,总计大小93M,已经存放到HDFS集群

Spark词频统计测试_源码


分析语言: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词频统计测试_源码_02



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



Spark词频统计测试_spark_03


历史科普:



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



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



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



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


举报

相关推荐

0 条评论