【发布时间】:2016-09-26 09:43:52
【问题描述】:
我在 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|
我想要 groupBy ID 并仅获取具有“最后”日期(最近的日期)的行。 “日期”列的类型是日期。
在我的情况下,结果是
------+----------------+
ID| max(date)|
------+----------------+
981200| 2010-12-30|
968800| 2010-12-31|
966500| 2010-12-01|
我试过了
Dataset<Row> df = old_df.groupBy("ID").max("date");
但因错误而失败
线程“主”org.apache.spark.sql.AnalysisException 中的异常: “日期”不是数字列。 聚合函数只能应用于数值列。;
有没有办法在 Spark 中获取最大日期(使用日期类型)?
提前致谢。
【问题讨论】:
标签: java apache-spark apache-spark-sql