我在Java中使用Spark 2.0。我有一个数据集,看起来像这样:
------+----+----+----+----------------+
ID|col1|col2|col3| date|
------+----+----+----+----------------+
981200| a | q | z | 2010-12-30|
968800| s | w | x | 2010-12-31|
966500| d | e | c | 2010-11-02|
966500| f | r | v | 2010-12-01|
981200| g | t | b | 2010-12-03|
Run Code Online (Sandbox Code Playgroud)
我想对ID进行分组并仅获取具有“最后”日期(最近的日期)的行。“日期”列的类型为date。
就我而言,结果是
------+----------------+
ID| max(date)|
------+----------------+
981200| 2010-12-30|
968800| 2010-12-31|
966500| 2010-12-01|
Run Code Online (Sandbox Code Playgroud)
我试过了
Dataset<Row> df = old_df.groupBy("ID").max("date");
Run Code Online (Sandbox Code Playgroud)
但由于错误而失败
线程“主”中的异常org.apache.spark.sql.AnalysisException:“日期”不是数字列。聚合功能只能应用于数字列。
有没有一种方法可以获取Spark中的最大日期(使用日期类型)?
提前致谢。