小编erc*_*ran的帖子

Spark 2.0 groupBy列,然后在datetype列上获取max(date)

我在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中的最大日期(使用日期类型)?

提前致谢。

java apache-spark apache-spark-sql

1
推荐指数
1
解决办法
4705
查看次数

标签 统计

apache-spark ×1

apache-spark-sql ×1

java ×1