2015-09-23 2 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: String, k2: String)

но результат не сортировать! Зачем ?

ответ

1

Вам необходимо предоставить заказ, по которому можно сравнить экземпляры классов case. Преобразование 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

существует неявное неявного вал sortOrderKey = новый Заказ [OrderedKey] { переопределения Защиты сравнить (х: OrderedKey, y: OrderedKey) = { (x.k1, x.k2) compare (x.k1, y.k2) } , но не сортировка, когда установлено перераспределение (1) справа – 040840219