Spark(JAVA) - dataframe多重聚合groupBy?

10
我正在尝试使用JAVA在Spark上编写groupBy。在SQL中,它看起来像这样:
SELECT id, count(id) as count, max(date) maxdate
FROM table
GROUP BY id;

但是这个查询的Spark/JAVA风格等价物是什么呢?假设变量table是一个数据框,为了看到与SQL查询的关系。我想到的是:

table = table.select(table.col("id"), (table.col("id").count()).as("count"), (table.col("date").max()).as("maxdate")).groupby("id")

显然这是不正确的,因为你不能在列上使用像.count.max这样的聚合函数,只能对数据帧使用。那么在Spark JAVA中该怎么做呢?

谢谢!

1个回答

25

你可以使用 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();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接