Spark词频统计测试

28 篇文章 16 订阅
10 篇文章 0 订阅
数据:中华书局白话版24史,总计大小93M,已经存放到HDFS集群


分析语言: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:此源代码过滤部分和可视化部分在另外的文件里面,需要的可以通过公众号邮箱获取。

分析结果:



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



历史科普:

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

虾神说D

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值