gpt4 book ai didi

scala - 在groupBy之后获得前N名,并将其视为RDD

转载 作者:行者123 更新时间:2023-12-04 16:31:13 25 4
gpt4 key购买 nike

我想获得N的groupByKey之后的顶级RDD项,并将topNPerGroup的类型(在下面)转换为RDD[(String, Int)],其中List[Int]值为flattendata

val data = sc.parallelize(Seq("foo"->3, "foo"->1, "foo"->2,
"bar"->6, "bar"->5, "bar"->4))

每个组中排名靠前的 N项的计算方式为:
val topNPerGroup: RDD[(String, List[Int]) = data.groupByKey.map { 
case (key, numbers) =>
key -> numbers.toList.sortBy(-_).take(2)
}

结果是
(bar,List(6, 5))
(foo,List(3, 2))

由...打印
topNPerGroup.collect.foreach(println)

如果实现, topNPerGroup.collect.foreach(println)将生成( 预期结果!)
(bar, 6)
(bar, 5)
(foo, 3)
(foo, 2)

最佳答案

您的问题有点令人困惑,但是我认为这可以满足您的需求:

val flattenedTopNPerGroup = 
topNPerGroup.flatMap({case (key, numbers) => numbers.map(key -> _)})

并在REPL中打印出您想要的内容:
flattenedTopNPerGroup.collect.foreach(println)
(foo,3)
(foo,2)
(bar,6)
(bar,5)

关于scala - 在groupBy之后获得前N名,并将其视为RDD,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27275103/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com