我想使用列名数组作为输入来聚合 Spark 数据框,同时保留列的原始名称。
df.groupBy($"id").sum(colNames:_*)
这有效但无法保留名称。灵感来自找到的答案 here我没有成功尝试这个:
df.groupBy($"id").agg(sum(colNames:_*).alias(colNames:_*))
error: no `: _*' annotation allowed here
它可以采用单个元素,例如
df.groupBy($"id").agg(sum(colNames(2)).alias(colNames(2)))
如何使整个阵列发生这种情况?
最佳答案
只需提供带有别名的列序列:
val colNames: Seq[String] = ???
val exprs = colNames.map(c => sum(c).alias(c))
df.groupBy($"id").agg(exprs.head, exprs.tail: _*)
关于scala - 使用列名数组聚合 Spark 数据框,保留名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39388307/