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

问题描述 投票:0回答:1

我有一个m2 RDD组成

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,但我找不到这个。

scala apache-spark rdd
1个回答
3
投票

只需提供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)
© www.soinside.com 2019 - 2024. All rights reserved.