scala - 获取总和并选择最大键值对而不在 spark scala 中并行化
问题描述
我有一个 Seq(String) 如下,我需要按键减少
val sq = Seq("a:5", "b:6", "c:10", "a:12", "c:8", "b:11")
我不想使用并行化,因为我必须对数据集中的每条记录都这样做。我需要如下结果,键的总和,然后我选择最大的键值。
result: Seq("c:18")
提前致谢
解决方案
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)
- 将字符串解析
(String, Int)
成对(第一个map
) - 按字符串分组 (
groupBy
) - 对每组中的值求和(第二个
map
) - 找到最大值 (
maxBy
)
推荐阅读
- reactjs - 如何为 useHitory() 覆盖非泛型类型,例如 @types/History?
- arduino - sim800l 有 url 限制吗?
- python - 如何使用 matplotlib 在 statsmodel 中绘制 Logit 的结果
- python - 显示特定类别的所有文章 [django]
- java - C 和 Java 中的局部变量
- python - 使用 pyautgui (python3) 按“_”或“:”
- google-cloud-firestore - 在匿名帖子中存储 uid 是个坏主意吗?
- javascript - 在 Angular 组件中使用大量输入是否不好?
- python - 如何加速从用户那里获取输入的简单算法
- java - 在 Word 中打印数字