【发布时间】:2020-09-17 11:25:46
【问题描述】:
假设我有一个 Spark Scala 程序,其 RDD 名为 mention_rdd,如下所示:
(name, (filename, sum))
...
(Maria, (file0, 3))
(John, (file0, 1))
(Maria, (file1, 6))
(Maria, (file2, 1))
(John, (file2, 3))
...
我们有文件名和每个名称的出现次数。
我想为每个名称减少并找到出现次数最多的文件名。例如:
(name, (filename, max(sum))
...
(Maria, (file1, 6))
(John, (file2, 3))
...
我尝试自己访问 RDD 的 (filename,sum) 元组,所以我可以从那里减少 name(由于错误说我无法从 mention_rdd 遍历,因为 (String,Int)不是TraversableOnce 类型):
val output = mention_rdd.flatMap(file_counts => file_counts._2.map(file_counts._2._1, file_counts._2._2))
.reduceByKey((a, b) => if (a > b) a else b)
但我收到一条错误消息,提示 value map 不是 (String, Int) 的成员
这可以在 Spark 中实现吗?如果是这样,怎么办?我的方法从一开始就有缺陷吗?
【问题讨论】:
标签: scala apache-spark mapreduce rdd reduce