火花数据集分组和总和
Posted
技术标签:
【中文标题】火花数据集分组和总和【英文标题】: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。 【参考方案1】:它不起作用,因为在 groupBy 之后我得到一个 GroupedDataset 对象,当我尝试应用函数 agg 时,它需要 typedColumn 而不是 column。
啊,由于 Spark 2.x 中 Dataset 和 DataFrame 的合并,对此存在一些混淆,其中有一个 groupBy
可用于关系列,groupByKey
可用于类型列。因此,假设您在 1.6 中使用显式数据集,那么解决方案是通过 .as
方法对列进行典型化。
sum("CURRENT_MONTH").as[Int]
【讨论】:
以上是关于火花数据集分组和总和的主要内容,如果未能解决你的问题,请参考以下文章