gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 07:32:50 24 4
gpt4 key购买 nike

我在 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|

我想按 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");

但因错误而失败

Exception in thread "main" org.apache.spark.sql.AnalysisException: "date" is not a numeric column. Aggregation function can only be applied on a numeric column.;

有没有办法在 Spark 中获取最大日期(使用类型日期)?

提前致谢。

最佳答案

RelationalGroupedDataset.max 仅适用于数值。

您可以尝试使用 agg() 和随附的 max 函数。在 Scala 中:

import org.apache.spark.sql.functions._
old_df.groupBy($"ID").agg(max("date"))

所以在 Java 中它应该是:

import static org.apache.spark.sql.functions.*;
old_df.groupBy("ID").agg(max("date"))

关于java - Spark 2.0 groupBy 列,然后在 datetype 列上获取 max(date),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39699495/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com