2016-12-05 4 views
2

У меня есть RDD [org.joda.time.DateTime]. Я хотел бы сортировать записи по дате в scala.Сортировать по дате Время в scala

ввод - образец данных после применения сбора() ниже -

res41: Array[org.joda.time.DateTime] = Array(2016-10-19T05:19:07.572Z, 2016-10-12T00:31:07.572Z, 2016-10-18T19:43:07.572Z) 

Ожидаемого выхода

2016-10-12T00:31:07.572Z 
2016-10-18T19:43:07.572Z 
2016-10-19T05:19:07.572Z 

Я гугл и проверил следующую ссылку, но не мог понять -

How to define an Ordering in Scala?

Любая помощь?

ответ

2

Если вы собираете записи вашего РДУ, то вы можете применить следующую сортировку:

array.sortBy(_.getMillis) 

наоборот, если ваш РДД является большим, и вы не хотите, чтобы собрать его водитель, вы должны рассмотреть следующие вопросы:

rdd.sortBy(_.getMillis) 
1

Вы можете определить неявный порядок для org.joda.time.DateTime так;

implicit def ord: Ordering[DateTime] = Ordering.by(_.getMillis) 

который смотрит на миллисекунды DateTime и сортируется на основе этого.

Вы можете либо гарантировать, что неявное находится в Вашей области или просто использовать его более явно:

arr.sorted(ord) 

 Смежные вопросы

  • Нет связанных вопросов^_^