如何将 Iterable[String] 分组为(键,出现次数)元组
Posted
技术标签:
【中文标题】如何将 Iterable[String] 分组为(键,出现次数)元组【英文标题】:How to group Iterable[String] into (key, no of occurrences) tuple 【发布时间】:2020-03-08 20:06:41 【问题描述】:我是 spark 和 scala 的新手,我正在尝试
我有 (presentation,CompactBuffer(3, 3, 24, 24, 24, 24, 24, 28, 28, 28)) 形式的 RDD 我正在尝试转换为 (presentation, List((3,2),(24,5),(28,3))
我能够转换为 (string, Iterable[String]) (演示文稿,列表((3,1),(3,1),(24,1),(24,1),(24,1),(24,1),(24,1),(28, 1), (28,1), (28,1)))。
如何将它们分组为 (3,2), (24, 3)
''' val RDD4 = RDD3.map
case (key, values) =>
val v = values.map(word => (word, 1))
(key, v)
'''
【问题讨论】:
Spark 是用 Scala 编写的,pyspark 是用于 spark 的 Python API。 【参考方案1】:你可以这样:
List((3,1), (3,1), (24,1), (24,1), (24,1), (24,1), (24,1), (28,1), (28,1), (28,1))
.groupBycase (key, _) => key
.mapValues(
valuesWithSameKeyList => valuesWithSameKeyList
.map
case (_, value) => value
.sum
)
【讨论】:
以上是关于如何将 Iterable[String] 分组为(键,出现次数)元组的主要内容,如果未能解决你的问题,请参考以下文章
将 Iterable[Either[A,B]] 减少为 Either[A, Iterable[B]]