Scala 在Spark RDD中查找最新/最早的一天

Scala 在Spark RDD中查找最新/最早的一天,scala,apache-spark,rdd,Scala,Apache Spark,Rdd,我有一个m2RDD,包括 case class Medication(patientID: String, date: Date, medicine: String) 我需要找到第一天和最后一天。我试过了 val latest_date_m2 = m2.maxBy(_.date).date 我得到: 没有为java.sql.Date定义隐式排序。 [错误]val latest_date_m2=m2.maxBy(u.date).date 看起来Scala“不知道”如何比较日期。我想,我需要

我有一个
m2
RDD,包括

case class Medication(patientID: String, date: Date, medicine: String)
我需要找到第一天和最后一天。我试过了

val latest_date_m2  = m2.maxBy(_.date).date
我得到:

没有为java.sql.Date定义隐式排序。
[错误]val latest_date_m2=m2.maxBy(u.date).date

看起来Scala“不知道”如何比较日期。我想,我需要用一个不同的函数替换
maxBy
,但我找不到这个函数。

只需提供
排序

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)

只需提供
订购

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)

你能指定日期的格式吗?它是字符串的日期类型还是时间戳?您可以指定日期的格式吗?它是字符串的日期类型还是时间戳类型