当应用诸如reduceByKey
之类的函数时,有没有办法指定除元组的第一个元素之外的其他键?
我目前的解决方案是使用map
函数以正确的顺序重新排列元组,我假设这个额外的操作需要计算成本,对吗?
答案 0 :(得分:3)
要使用reduceByKey
,您需要一个键值RDD[K,V]
,其中K
是将要使用的键。如果您有RDD[V]
,则需要先执行map
来指定密钥。
myRdd.map(x => (x, 1))
如果您的密钥不是您想要的RDD[K,V]
,则需要另一个map
。没有别的方法来解决这个问题。例如,如果要在键和值之间切换,可以执行以下操作:
myPairRdd.map(_.swap)
答案 1 :(得分:0)
您可以覆盖比较功能并呼叫sortByKey
:
implicit val sortFunction = new Ordering[String] {
override def compare(a: String, b: String) = // compare function
}
val rddSet: RDD[(String, String)] = sc.parallelize(dataSet)
rddSet.sortByKey()