我有一个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(...)
所以,我的问题是:我如何以编程方式执行此操作?
答案 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(...)
/ head
与tail
:
groupBy(col1: String, cols: String*)