You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spark Scala:如何从RDD中找出出现频率最高的Title列值

解决Spark RDD中统计出现频率最高的Title问题

咱们一步一步来拆解这个需求,核心就是对Title列做分组计数,然后找出计数最大的那个值,下面给你两种常用的实现方式,你可以根据数据量情况选择:

方法一:用reduceByKey做分布式聚合(适合大数据量)

这种方式会在集群的Executor端先做局部聚合,再汇总,性能更好,适合处理大规模数据:

  1. 提取Title列:从原RDD的每一行中取出第二个元素(也就是Title)
# 假设你的原始RDD叫做original_rdd,每行是(name, title, views, size)的元组
titles_rdd = original_rdd.map(lambda row: row[1])
  1. 分组计数:把每个Title映射成(Title, 1)的键值对,然后用reduceByKey累加计数
title_count_rdd = titles_rdd.map(lambda title: (title, 1)).reduceByKey(lambda a, b: a + b)
  1. 找出计数最大的Title:用max方法,指定按计数(元组的第二个元素)排序
most_frequent = title_count_rdd.max(key=lambda x: x[1])
# 输出结果中的Title部分
print(most_frequent[0])  # 会打印出Droomstele

方法二:用countByValue快速统计(适合小数据量)

如果你的数据量不大,直接把统计结果拉到Driver端处理会更简洁:

  1. 提取Title列:和上面步骤一致
titles_rdd = original_rdd.map(lambda row: row[1])
  1. 直接统计每个Title的出现次数:countByValue会返回一个字典,键是Title,值是对应次数
title_counts = titles_rdd.countByValue()
  1. 找出字典中值最大的键:用Python内置的max函数,指定按字典的值排序
most_frequent_title = max(title_counts, key=title_counts.get)
print(most_frequent_title)  # 同样会输出Droomstele

两种方法都能得到你想要的结果,要是数据量特别大,优先选第一种分布式聚合的方式,避免Driver端内存溢出~

内容的提问来源于stack exchange,提问作者Jeet Banerjee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:14:18