通过Spark groupBy数据帧查找时间戳的最小值



当我尝试在列上对数据帧进行分组,然后尝试为每个分组groupbyDatafram.min('timestampCol')找到最小值时,似乎我无法在非数字列上进行分组。那么,我如何在groupby上正确筛选最短(最早)日期?

我正在从postgresqlS3实例流式传输数据帧,这样数据就已经配置好了。

只需直接执行聚合,而不用min助手:

import org.apache.spark.sql.functions.min
val sqlContext: SQLContext = ???
import sqlContext.implicits._
val df = Seq((1L, "2016-04-05 15:10:00"), (1L, "2014-01-01 15:10:00"))
  .toDF("id", "ts")
  .withColumn("ts", $"ts".cast("timestamp"))
df.groupBy($"id").agg(min($"ts")).show
// +---+--------------------+
// | id|             min(ts)|
// +---+--------------------+
// |  1|2014-01-01 15:10:...|
// +---+--------------------+

min不同,它适用于任何类型的Orderable

相关内容

  • 没有找到相关文章

最新更新