Spark(JAVA) - 数据帧组有多个聚合?

lte*_*e__ 8 java apache-spark

我正在尝试使用JAVA在Spark上编写一个groupBy.在SQL中,这看起来像

SELECT id, count(id) as count, max(date) maxdate
FROM table
GROUP BY id;
Run Code Online (Sandbox Code Playgroud)

但是Spark/JAVA样式与此查询的等价物是什么?假设变量table是一个数据帧,以查看与SQL查询的关系.我想的是:

table = table.select(table.col("id"), (table.col("id").count()).as("count"), (table.col("date").max()).as("maxdate")).groupby("id")
Run Code Online (Sandbox Code Playgroud)

这显然是不正确的,因为你不能使用聚合功能,如.count.max在列,只有dataframes.那么如何在Spark JAVA中完成这项工作?

谢谢!

Yua*_* JI 19

你可以这样做org.apache.spark.sql.functions:

import org.apache.spark.sql.functions;

table.groupBy("id").agg(
    functions.count("id").as("count"),
    functions.max("date").as("maxdate")
).show();
Run Code Online (Sandbox Code Playgroud)