spark sortByKey案例类

时间:2015-09-23 02:45:36

标签: sorting apache-spark case-class

spark sortByKey键是Case Class的类型

rdd.filter(line => {
  if(StringUtils.isEmpty(line)){
    false
  }else{
    true
  }
}).map(line => {
    val array = line.split(",")
  (OrderedKey(array(0),array(1)),array(2))
}).repartition(1).sortByKey(true).foreach(println(_))

案例类OrderedKey(k1:String,k2:String)

但结果没有排序!为什么?

1 个答案:

答案 0 :(得分:1)

您需要提供一个可以比较案例类实例的顺序。然后sortByKey()转换将使用此排序对您的OrderedKey键进行排序。

以下是按案例类参数顺序排序的示例:

case class OrderedKey(k1: String, k2: String) extends Ordered[OrderedKey] {
  import scala.math.Ordered.orderingToOrdered
  def compare(that: OrderedKey): Int = (this.k1, this.k2) compare (that.k1, that.k2)
}