用pyspark开发一个WordCount程序

一、一行代码实现WordCount并保存结果

hello.txt内容:
在这里插入图片描述

sc.textFile("/opt/bigdatas/hello.txt").flatMap(lambda line: line.split("\t")).map(lambda word: (word, 1)).reduceByKey(lambda x, y: x + y).saveAsTextFile("/opt/bigdatas/result/wc/001")

统计结果:
在这里插入图片描述

二、python代码实现WordCount

开发步骤:
将文本内容的每一行转成一个个的单词,flatMap()
将单个单词转换成(单词,1) ,map()
把所有相同单词的计数相加得到最终的结果,reduceByKey()

import sys
from pyspark import SparkContext
from pyspark import SparkConf
"""
词频统计
"""
if __name__ == '__main__':
    if len(sys.argv) !=2 :
        print("统计wordcount <input>",file=sys.stderr)
        sys.exit(-1)

    conf = SparkConf().setMaster("local[2]").setAppName("spark03")
    sc = SparkContext(conf=conf)

    def printResult():
        counts = sc.textFile(sys.argv[1]).flatMap(lambda line:line.split("\t")).map(lambda x:(x,1)).reduceByKey(lambda a,b:a+b)
        output = counts.collect()

        for(word , count) in output:
            print("%s : %i" % (word,count))

    printResult()
    sc.stop()

测试:
1.一个文件:

./spark-submit --master local[2] --name wordcount01 /opt/script/wordcount01.py file:///opt/bigdatas/hello.txt

在这里插入图片描述
在这里插入图片描述
2.测试文件夹下的多个文件
复制多个hello.txt文件到 wc文件夹下
在这里插入图片描述

./spark-submit --master local[2] --name wordcount01 /opt/script/wordcount01.py file:///opt/bigdatas/wc

在这里插入图片描述
在这里插入图片描述
3.模糊匹配计算结果
模糊匹配wc文件夹下的 txt文件

./spark-submit --master local[2] --name wordcount01 /opt/script/wordcount01.py file:///opt/bigdatas/wc/*.txt

在这里插入图片描述
在这里插入图片描述

三.python代码实现WordCount 并保存
import sys
from pyspark import SparkContext
from pyspark import SparkConf
"""
词频统计
"""
if __name__ == '__main__':
    if len(sys.argv) !=3 :
        print("统计wordcount <input> <output>",file=sys.stderr)
        sys.exit(-1)

    conf = SparkConf().setMaster("local[2]").setAppName("spark03")
    sc = SparkContext(conf=conf)

    def saveFile():
        sc.textFile(sys.argv[1]).flatMap(lambda line:line.split("\t")).map(lambda x:(x,1)).reduceByKey(lambda a,b:a+b).saveAsTextFile(sys.argv[2])

    saveFile()
    sc.stop()

分别测试一个文件和多个文件:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200521183408163.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl8zODg4Nzc1Mg==,size_16,color_FFFFFF,t_70

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值