Pra*_*nki 3 scala apache-spark apache-spark-sql
df.groupBy("col1", "col2", "col3") 工作得非常好.
但是,当我尝试执行以下操作时:
val dimensions = Seq("col1", "col2", "col3")
df.groupBy(dimensions)
Run Code Online (Sandbox Code Playgroud)
我收到这个错误:
<console>:38: error: overloaded method value groupBy with alternatives:
(col1: String,cols: String*)org.apache.spark.sql.GroupedData <and>
(cols: org.apache.spark.sql.Column*)org.apache.spark.sql.GroupedData
cannot be applied to (Seq[String])
Run Code Online (Sandbox Code Playgroud)
*在参数列表表示varargs之后,您必须解压缩序列.如果您有如下签名:
def foo(ts: T*) = ???
Run Code Online (Sandbox Code Playgroud)
可以使用任意数量的类型的参数调用它T:
foo()
foo(t1)
foo(t2)
...
Run Code Online (Sandbox Code Playgroud)
如果您有序列,可以使用_*语法传递它:
val ts: Seq[T] = ???
foo(ts: _*)
Run Code Online (Sandbox Code Playgroud)
有关详细信息,请参阅Scala语言规范中的" 重复参数"部分.
所以在这种情况下你可以:
df.groupBy(dimensions.head, dimensions.tail: _*)
Run Code Online (Sandbox Code Playgroud)
匹配(col1: String,cols: String*),或
df.groupBy(dimensions map col: _*)
Run Code Online (Sandbox Code Playgroud)
匹配 (cols: org.apache.spark.sql.Column*)
| 归档时间: |
|
| 查看次数: |
2123 次 |
| 最近记录: |