我有一个火花数据帧,我想通过多个键聚合值
正如 Spark 文档所建议的那样:
def groupBy(col1: String, cols: String*): GroupedData 分组 使用指定列的数据帧,因此我们可以对它们运行聚合
所以我做以下事情
val keys = Seq("a", "b", "c")
dataframe.groupBy(keys:_*).agg(...)
Intellij Idea向我抛出了以下错误:
- 非重复参数的扩展
- 类型不匹配:预期序列[列],实际序列[字符串]
但是,我可以手动传递多个参数而不会出错:
dataframe.groupBy("a", "b", "c").agg(...)
所以,我的问题是:我怎样才能以编程方式做到这一点?
使用带有groupBy(cols: Column*)
的列
import org.apache.spark.sql.functions.col
val keys = Seq("a", "b", "c").map(col(_))
dataframe.groupBy(keys:_*).agg(...)
或head
/tail
groupBy(col1: String, cols: String*)
:
val keys = Seq("a", "b", "c")
dataframe.groupBy(keys.head, keys.tail: _*).agg(...)