pyspark+dataframe+wordcount 版本

本文介绍如何使用 Spark SQL 的 DataFrame API 来实现 WordCount 应用,通过具体代码示例展示了如何读取文本文件、分词、计数并显示结果。此方法相比基于 RDD 的实现更易于理解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

网上现有的wordcount一般包括:scala、Java、python版本,且为基于RDD数据格式的方法,该方法较简单,但门槛较高,若采用dataframe的方法,则结果更好理解,但查询函数的过程较为复杂,网上没有找到合适的版本,所以自己写一个,可以采用sparksql的语句进行wordcount的计算。代码如下:

from pyspark.sql import SparkSession
from pyspark.sql import functions
from pyspark.sql.functions import split, explode

spark = SparkSession.builder.appName("wc").getOrCreate()
lines = spark.read.text("q.txt")
words=lines.select(explode(split(lines.value, "\s")).alias("word"))
#lines.select(explode(split(lines.value, "\s")).alias("word")).show()
#values=sorted(words.groupBy(['word']).count().collect())
#print(values)
words.createTempView("ttt");
df = spark.sql("select word, count(word) from ttt group by word ")
df.show(100)

##部分为list效果的展示,后面为创建表的形式来进行sql语句的统计和计算,explode和split函数组合起来可以按空格方式进行切割,并单独保存到一行。运行结果如下:

+----------------+-----------+
|            word|count(word)|
+----------------+-----------+
|     Kubernetes,|          1|
|         complex|          1|
|           data,|          1|
|           using|          1|
|          access|          1|
|             you|          1|
|             can|          1|
|             for|          1|
|          Mesos,|          1|
|            SQL.|          1|
|         Combine|          1|
|            love|          1|
|           query|          1|
|         diverse|          1|
|              in|          2|
|        physical|          1|
|           Write|          1|
|            both|          1|
|       streaming|          1|
|              R,|          1|
|          cloud.|          1|
|            SQL,|          1|
|          Apache|          2|
|state-of-the-art|          1|
|              on|          1|
|       execution|          1|
|        achieves|          1|
|      optimizer,|          1|
|         engine.|          1|
|            data|          1|
|            runs|          1|
|           batch|          1|
|              It|          1|
|         quickly|          1|
|          Scala,|          1|
|             the|          1|
|            high|          1|
|           Java,|          1|
|             DAG|          1|
|               i|          1|
|      analytics.|          1|
|             and|          4|
|         Hadoop,|          1|
|    applications|          1|
|         Python,|          1|
|     performance|          1|
|           Spark|          2|
|               a|          3|
|     standalone,|          1|
|      scheduler,|          1|
|      streaming,|          1|
|              or|          1|
|        sources.|          1|
+----------------+-----------+


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值