2015-09-23 41 views
1

火花sortByKey關鍵是案例類的類型火花sortByKey案例類

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:字符串,K2:字符串)

但結果不進行排序!爲什麼?

回答

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) 
} 
+0

有隱式 隱VAL sortOrderKey =新訂貨[OrderedKey] { 倍率DEF比較(X: OrderedKey,y:OrderedKey)= { (x.k1,x.k2)compare(x.k1,y.k2) } 但不排序,設置重新分區(1)右 – 040840219