Spark 数据帧组由,序列作为键参数



我有一个火花数据帧,我想通过多个键聚合值

正如 Spark 文档所建议的那样:

def groupBy(col1: String, cols: String*): GroupedData 分组 使用指定列的数据帧,因此我们可以对它们运行聚合

所以我做以下事情

 val keys = Seq("a", "b", "c")
 dataframe.groupBy(keys:_*).agg(...)

Intellij Idea向我抛出了以下错误:

  1. 非重复参数的扩展
  2. 类型不匹配:预期序列[列],实际序列[字符串]

但是,我可以手动传递多个参数而不会出错:

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(...)  

相关内容

  • 没有找到相关文章

最新更新