Spark中的键值对顺序

时间:2015-05-26 15:28:30

标签: scala apache-spark

当应用诸如reduceByKey之类的函数时,有没有办法指定除元组的第一个元素之外的其他键?

我目前的解决方案是使用map函数以正确的顺序重新排列元组,我假设这个额外的操作需要计算成本,对吗?

2 个答案:

答案 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()