Spark Dataframe groupBy with sequence as keys arguments

时间:2016-05-30 11:26:26

标签: scala apache-spark apache-spark-sql

我有一个spark dataFrame,我想通过多个键聚合值

正如Spark文档所示:

  

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

所以我做了以下

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

Intellij Idea引发了以下错误:

  
      
  1. 非重复参数的扩展
  2.   
  3. 类型不匹配:预期Seq [Column],实际Seq [String]
  4.   

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

dataframe.groupBy("a", "b", "c").agg(...)

所以,我的问题是:我如何以编程方式执行此操作?

1 个答案:

答案 0 :(得分:9)

使用 Server myServer = new Server(servername); Backup bkp = new Backup(); bkp.Action = BackupActionType.Database; Database myDatabase = myServer.Databases[database]; bkp.Database = myDatabase.Name; bkp.Devices.AddDevice(path, DeviceType.File); bkp.BackupSetName = string.Format("{0} database Backup", database); bkp.BackupSetDescription=string.Format("{0} database - Full Backup", database); bkp.Initialize = true; bkp.SqlBackup(myServer);

groupBy(cols: Column*)

import org.apache.spark.sql.functions.col val keys = Seq("a", "b", "c").map(col(_)) dataframe.groupBy(keys:_*).agg(...) / headtail

groupBy(col1: String, cols: String*)