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

Spark Scala中如何对RDD按name列分组并统计views列求和?

按name分组求views总和的Spark Scala实现方案

嘿,刚上手Spark Scala的话,这个需求其实很好实现,我给你一步步拆解:

核心思路

我们需要把RDD里的每一行数据转换成**(name, views数值)**的键值对,然后通过reduceByKey操作对相同name的views值进行累加求和。

完整代码示例

假设你的原始RDD名为rawRDD(比如通过sc.textFile("你的文件路径")加载而来),代码如下:

// 加载数据(如果还没加载的话)
val rawRDD = sc.textFile("path/to/your/data.txt")

// 转换为键值对并分组求和
val resultRDD = rawRDD
  .map(line => {
    // 按空格拆分每行数据,得到四个字段的数组
    val parts = line.split(" ")
    // 提取name作为key,views转成Int作为value
    (parts(0), parts(2).toInt)
  })
  // 对相同key的value进行累加
  .reduceByKey(_ + _)

// 查看结果(可以用collect()拿到所有结果,或者foreach打印)
resultRDD.foreach(println)

代码解释

  • split(" "):把每行数据按空格拆分成数组,对应你说的4列:parts(0)是name,parts(2)是views。
  • map(...):将每行数据映射成键值对,把views从字符串转成整数,方便后续求和。
  • reduceByKey(_ + _):这是Spark RDD的核心分组聚合操作,会自动把相同name的所有views值加起来,得到每个name的总views数。

输出结果

运行后你会得到符合预期的输出(顺便提一句,你给的示例里af对应的views是2+2=4,你期望输出写的2应该是笔误啦😉):

aa 3
aa.b 2
af 4
en 1

内容的提问来源于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:13:10