【问题标题】:Spark (JAVA) - dataframe groupBy with multiple aggregations?Spark (JAVA) - 具有多个聚合的数据帧 groupBy?
【发布时间】:2016-07-15 12:33:51
【问题描述】:

我正在尝试使用 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 中是如何完成的呢?

谢谢!

【问题讨论】:

    标签: java apache-spark


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2018-09-03
      • 2016-05-24
      • 1970-01-01
      • 2017-05-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多