当我尝试将我的数据框分组到一个列上,然后尝试查找每个分组的最小值时,groupbyDatafram.min('timestampCol')似乎无法在非数字列上执行此操作。然后,如何正确过滤分组依据上的最短(最早)日期?
groupbyDatafram.min('timestampCol')
我正在从Postgresql S3实例流式传输数据帧,因此已经配置了数据。
只需直接执行聚合,而不使用min辅助程序即可:
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类型。
Orderable