【问题标题】:spark dataset group by and sum火花数据集分组和总和
【发布时间】:2017-11-24 16:15:09
【问题描述】:

我使用 Spark 1.6.1 和 Java 作为编程语言。 以下代码在 dataframes 上运行良好:

simpleProf.groupBy(col("col1"), col("col2") )
                .agg(
                     sum("CURRENT_MONTH"),
                     sum("PREVIOUS_MONTH")
                );

但是,它不使用 数据集,知道如何在 Java/Spark 中对数据集执行相同的操作吗?

干杯

【问题讨论】:

  • 你能发布你的代码不起作用吗?这应该可以工作,所以这取决于你如何尝试这样做。
  • 在我的情况下它也有效。你能粘贴你的异常吗?
  • 您能否详细说明“它不使用数据集”?你怎么知道它在使用数据集时不起作用?是什么输出让您如此相信?
  • 它不起作用,因为在 groupBy 之后我得到一个 GroupedDataset 对象并且当我尝试应用函数 agg 它需要 typedColumn 而不是 column。

标签: java apache-spark dataframe dataset


【解决方案1】:

它不起作用,因为在 groupBy 之后我得到一个 GroupedDataset 对象,当我尝试应用函数 agg 时,它需要 typedColumn 而不是 column。

啊,由于 Spark 2.x 中 Dataset 和 DataFrame 的合并,对此存在一些混淆,其中有一个 groupBy 可用于关系列,groupByKey 可用于类型列。因此,假设您在 1.6 中使用显式数据集,那么解决方案是通过 .as 方法对列进行典型化。

sum("CURRENT_MONTH").as[Int]

【讨论】:

    猜你喜欢
    • 2021-10-16
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多