使用PySpark在Databricks上统计文本文件所有单词的总字符长度
PySpark统计所有单词总长度解决方案
方式1:基于你已有的DataFrame直接求和
你已经生成了带len列的DataFrame,直接调用聚合求和函数即可:
# 导入pyspark内置函数 from pyspark.sql.functions import sum as spark_sum # 对len列聚合求和,提取最终结果 total_length = counts_df2.agg(spark_sum("len").alias("total_len")).collect()[0]["total_len"] print(f"所有单词总长度为:{total_length}")
如果需要直接在Databricks页面展示结果,也可以直接用:
display(counts_df2.agg(spark_sum("len").alias("total_length")))
方式2:直接用RDD算子计算(无需转DataFrame)
如果你不需要保留每个单词的长度明细,直接用RDD算子计算更简洁:
lee_file = sc.textFile("/FileStore/tables/lee.txt") total_length = lee_file.flatMap(lambda line: line.split(" ")) \ .map(lambda word: len(word)) \ .sum() print(f"所有单词总长度为:{total_length}")
注意事项
你当前的逻辑是按空格拆分单词,标点符号会被计入单词长度,比如示例里的amet,长度会被统计为5、elit.长度会被统计为5。如果需要排除标点统计纯字母长度,可以在计算长度前对单词做清洗,示例如下:
import re # 清洗掉非字母数字的字符后再算长度 .map(lambda word: len(re.sub(r'[^a-zA-Z0-9]', '', word)))
内容的提问来源于stack exchange,提问作者Abiodun Adeoye
相关产品推荐
相关产品推荐

