以序列作为键参数的 Spark Dataframe groupBy [重复]
Posted
技术标签:
【中文标题】以序列作为键参数的 Spark Dataframe groupBy [重复]【英文标题】:Spark Dataframe groupBy with sequence as keys arguments [duplicate] 【发布时间】:2016-05-30 11:26:25 【问题描述】:我有一个 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(...)
所以,我的问题是:我怎样才能以编程方式做到这一点?
【问题讨论】:
【参考方案1】:要么使用带有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(...)
【讨论】:
以上是关于以序列作为键参数的 Spark Dataframe groupBy [重复]的主要内容,如果未能解决你的问题,请参考以下文章
使用多列作为存储在 Apache Spark 中的数组中的键来连接两个 Dataframe
Spark:DataFrame 上 UDF 的任务不可序列化
python - “将重新索引布尔系列键以匹配DataFrame索引。来自ipykernel导入kernelapp作为app“