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)
但结果没有排序!为什么?
答案 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)
}