Найти самый последний / самый ранний день в Spark RDD - PullRequest
0 голосов
/ 11 февраля 2019

У меня есть m2 СДР, состоящий из

case class Medication(patientID: String, date: Date, medicine: String)

, и мне нужно найти первый и последний день.Я пытался

val latest_date_m2  = m2.maxBy(_.date).date

Я получил:

No implicit Ordering defined for java.sql.Date.
[error]       val latest_date_m2 = m2.maxBy(_.date).date

Похоже, что Scala "не знает", как сравнивать даты.Я думаю, мне нужно заменить maxBy другой функцией, но я не могу найти эту.

1 Ответ

0 голосов
/ 11 февраля 2019

Просто укажите Ordering

import scala.math.Ordering

object SQLDateOrdering extends Ordering[java.sql.Date] {
  def compare(a: java.sql.Date, b: java.sql.Date) = a compareTo b
}

m2.maxBy(_.date)(SQLDateOrdering)

, хотя стоит отметить, что m2 не может быть RDD, так как RDD не имеет maxBy метода (скорее всего, Seq).Если бы это было RDD, вам понадобится

object MedicationDateOrdering extends Ordering[Medication] {
  def compare(a: Medication, b: Medication) = a.date compareTo b.date
}

и max

m2.max()(MedicationDateOrdering)
...