【问题标题】:Find the latest / earliest day in Spark RDD在 Spark RDD 中查找最新/最早的日期
【发布时间】:2019-03-06 14:20:31
【问题描述】:

我有一个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】:

只需提供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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-08-18
    • 1970-01-01
    • 2021-10-29
    • 1970-01-01
    • 1970-01-01
    • 2021-11-14
    • 1970-01-01
    • 2017-02-18
    相关资源
    最近更新 更多