首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Apache Spark中使用reduceByKey (Scala)

在Apache Spark中使用reduceByKey (Scala)
EN

Stack Overflow用户
提问于 2014-06-06 06:58:08
回答 3查看 68.8K关注 0票数 24

我有一个类型为:(user id,name,count)的元组列表。

例如,

代码语言:javascript
复制
val x = sc.parallelize(List(
    ("a", "b", 1),
    ("a", "b", 1),
    ("c", "b", 1),
    ("a", "d", 1))
)

我试图将这个集合简化为一个每个元素名称都会被计算在内的类型。

因此在上面的代码中,val x被转换为:

代码语言:javascript
复制
(a,ArrayBuffer((d,1), (b,2)))
(c,ArrayBuffer((b,1)))

下面是我目前使用的代码:

代码语言:javascript
复制
val byKey = x.map({case (id,uri,count) => (id,uri)->count})

val grouped = byKey.groupByKey
val count = grouped.map{case ((id,uri),count) => ((id),(uri,count.sum))}
val grouped2: org.apache.spark.rdd.RDD[(String, Seq[(String, Int)])] = count.groupByKey

grouped2.foreach(println)

我正在尝试使用reduceByKey,因为它的执行速度比groupByKey快。

如何实现reduceByKey而不是上面的代码来提供相同的映射?

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24071560

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档