如何在groupby中指定多个列以及流窗口操作?

2skhul33  于 2021-05-18  发布在  Spark
关注(0)|答案(1)|浏览(523)

我无法指定列表中的列 groupBy 函数以及窗口操作。我的当前代码:

val groupCols = List("SINR_Distribution","NE_VERSION","NE_ID","NE_NAME","cNum","EarfcnDl","datetime","circle")
val aggDFrame = dframe.groupBy(groupCols, window($"EVENT_TIME", "60 minutes")).agg(Rule_Agg)

错误:
此行有多个标记:重载了方法值groupby和可选项:(col1:string,cols:string*)org.apache.spark.sql.relationalgroupeddataset(cols:org.apache.spark.sql.column*)org.apache.spark.sql.relationalgroupeddataset不能应用于(list[string],org.apache.spark.sql.column)重载了方法值groupby和可选项:(col1:string,cols:string*)org.apache.spark.sql.relationalgroupeddataset(cols:org.apache.spark.sql.column*)org.apache.spark.sql.relationalgroupeddataset不能应用于(list[string],org.apache.spark.sql.column)
我做错什么了?

smtd7mpg

smtd7mpg1#

您正在将字符串与中的列混合 groupBy . Windows window($"EVENT_TIME", "60 minutes") 正确解释为列,但列名列表必须是要匹配的列,不能混合类型。
你能做的是:

val cols = groupCols.map(col) ++ Seq(window($"EVENT_TIME", "60 minutes"))
val aggDFrame = dframe.groupBy(cols: _*).agg(...)

相关问题