我有一个像RDD[Int,String]
这样的键值对的RDD,我想为每个键应用zipWithIndex。有没有办法做到这一点?
例如,如果我有一个像
这样的kvPairs的RDD(0,10),(0,20),(0,30),(0,40),(1,11),(1,21),(1,31),(1,41) ...
我希望输出像
((0,10),1),((0,20),2),((0,30),3),((0,40),4),
((1,11),1),((1,21),2),((1,31),3),((1,41),4) ...
RDD可以具有任何键值组合。首先,我想要应用sortByKey
,然后再应用zipWithIndex
。
谢谢!
答案 0 :(得分:1)
这样的东西?
rdd
.groupByKey
.flatMap{case (k, vs) =>
vs
.toList
.sortBy(_.toInt) // Assuming this is expected order
.zipWithIndex
.map{case (v, i) => ((k, v), i + 1)}
}