spark练习例子——单词计数——pyspark

本文是一个使用PySpark进行单词计数的练习示例。首先,通过设置环境变量指定Python和Spark版本。然后,创建SparkSession并读取文本文件。数据经过flatmap操作进行分词,再进行单词计数。最后,展示了如何输出计数结果。该练习突出了在不同Spark版本间可能存在的差异。
摘要由CSDN通过智能技术生成

练习科目一 : 单词计数

引入依赖

import sys
import os

os.environ["PYSPARK_PYTHON"] = "E:/code-private/python/venvs/venv38/Scripts/python.exe"
# os.environ["PYSPARK_DRIVER_PYTHON"] = "E:/code-private/python/venvs/venv38/Scripts/python.exe"
os.environ["JAVA_HOME"] = "D:/Program Files/Java/jdk-11.0.7"
os.environ["SPARK_HOME"] = "D:/Program/spark-3.2.0-bin-hadoop3.2-scala2.13"
os.environ["PYLIB"] = os.environ["SPARK_HOME"] + "/python/lib"
sys.path.insert(0, os.environ["PYLIB"] + "/py4j-0.10.7-src.zip")
sys.path.insert(0, os.environ["PYLIB"] + "/pyspark.zip")

我用的是pycharm 跑的 notebook ,
notice: 这里遇到问题就是,我指定了pyspark 是虚拟环境的python 3.8 , 我 anaconda base 环境是3.7
跑pyspark ,一直都用的是 base 环境,一直都会报错,版本不兼容。

启动sparkSession


from pyspark.sql import SparkSession

spark = SparkSession.builder.appName("test").config("spark.network.timeout", "10000000").master(
    "local[*]").getOrCreate()
spark.version

spark 2.13 与之前的练习版本有着不同差异,需要注意

读取文本,和单词

text = spark.read.text("in/word_count.text")
text.take(1)
words = text.rdd.flatMap(lambda s : s.value.split(" "))
words.take(1)

由其是这里,在dataframe 里面,必须要通过value 来取值,而不是 直接 s.split(" ") 去切割

单词计数


wordCounts = words.countByValue()
for word,count in wordCounts.items():
    print("{} : {}".format(word,count))

总结

简单明了,无难度,需要适应新版本改变

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值