我有一个spark dataFrame,我想通过多个键聚合值
正如spark文档所建议的:
def groupBy(col1:String,cols:String *):GroupedData使用指定的列对DataFrame进行分组,因此我们可以对它们进行聚合
所以我做以下
val keys = Seq("a", "b", "c")
dataframe.groupBy(keys:_*).agg(...)
Intellij Idea引发以下错误:
- 扩展非重复参数
- 类型不匹配:预期的Seq [Column],实际的Seq [String]
但是,我可以手动传递多个参数而不会出现错误:
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(...)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句