我想循环n次,其中n是同一rdd上的累加器
让我们说n = 10,所以我希望下面的代码循环5次(因为累加器增加了2次)
val key = keyAcm.value.toInt
val rest = rdd.filter(_._1 > (key + 1))
val combined = rdd.filter(k => (k._1 == key) || (k._1 == key + 1))
.map(x => (key, x._2))
.reduceByKey { case (x, y) => (x ++ y) }
keyAcm.add(2)
combined.union(rest)
使用此代码过滤rdd并保留键0(累加器的初始值)和1。然后,我尝试合并其第二个参数并更改键以使用键0和合并数组创建新的rdd。之后,我将此rdd与原始rdd合并,留下过滤后的值(0和1)。最后,将累加器增加两个。如何重复这些步骤直到累加器为10?
有什么想法吗?
答案 0 :(得分:-1)
val rdd: RDD[(Int, String)] = ???
val res: RDD[(Int, Iterable[String])] = rdd.map(x => (x._1 / 2, x._2)).groupByKey()