首页 > 解决方案 > 获取总和并选择最大键值对而不在 spark scala 中并行化

问题描述

我有一个 Seq(String) 如下,我需要按键减少

val sq = Seq("a:5", "b:6", "c:10", "a:12", "c:8", "b:11")

我不想使用并行化,因为我必须对数据集中的每条记录都这样做。我需要如下结果,键的总和,然后我选择最大的键值。

result: Seq("c:18")

提前致谢

标签: scala

解决方案


sq.map{ str =>
  val Array(k, v) = str.split(":")
  (k, v.toInt)
}.groupBy(_._1).map{ case (k, kvs) =>
  (k, kvs.map(_._2).sum)
}.maxBy(_._2)
  1. 将字符串解析(String, Int)成对(第一个map
  2. 按字符串分组 ( groupBy)
  3. 对每组中的值求和(第二个map
  4. 找到最大值 ( maxBy)

推荐阅读