Vad*_* B. 1 scala apache-spark apache-spark-sql
我有一个spark dataFrame,我想通过多个键聚合值
正如Spark文档所示:
高清GROUPBY(COL1:字符串的cols:字符串*):GroupedData组使用指定的列数据框,这样我们就可以在上面运行聚集
所以我做了以下几点
val keys = Seq("a", "b", "c")
dataframe.groupBy(keys:_*).agg(...)
Run Code Online (Sandbox Code Playgroud)
Intellij Idea会引发以下错误:
- 扩展非重复参数
- 类型不匹配:预期Seq [Column],实际Seq [String]
但是,我可以手动传递多个参数而不会出现错误:
dataframe.groupBy("a", "b", "c").agg(...)
Run Code Online (Sandbox Code Playgroud)
所以,我的问题是:我如何以编程方式执行此操作?
要么使用列 groupBy(cols: Column*)
import org.apache.spark.sql.functions.col
val keys = Seq("a", "b", "c").map(col(_))
dataframe.groupBy(keys:_*).agg(...)
Run Code Online (Sandbox Code Playgroud)
或head/ tail与groupBy(col1: String, cols: String*):
val keys = Seq("a", "b", "c")
dataframe.groupBy(keys.head, keys.tail: _*).agg(...)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1904 次 |
| 最近记录: |