我正在嘗試將一個參數列表傳遞給一個函數。Scala:擴展參數列表給出錯誤
scala> val a = Array("col1", "col2")
a: Array[String] = Array(col1, col2)
我試圖使用:_*
符號,但它不工作。我不能爲我的生活工作,爲什麼!
val edges = all_edges.select(a:_*)
<console>:27: error: overloaded method value select with alternatives:
(col: String,cols: String*)org.apache.spark.sql.DataFrame <and>
(cols: org.apache.spark.sql.Column*)org.apache.spark.sql.DataFrame
cannot be applied to (String)
然而,這沒有問題:如果 val edges = all_edges.select("col1", "col2")
不知道這是相關的,但all_edges是我試圖僅僅通過在列表中指定他們保持列的火花數據幀。
scala> all_edges
res4: org.apache.spark.sql.DataFrame
任何想法?我一直在努力從例如。 Passing elements of a List as parameters to a function with variable arguments但似乎並沒有太遠
編輯:剛剛找到How to "negative select" columns in spark's dataframe - 但我很困惑,爲什麼語法twocol.select(selectedCols.head, selectedCols.tail: _*)
是必要的?
感謝 - 作爲一般的Scala的問題 - 如果函數簽名(COL:字符串的cols:字符串*),爲什麼只有字符串仍然有效(似乎沒有任何其他重載,例如'all_edges.select(「col1」)?' – undershock
因爲空序列仍然是一個序列,因此它可以被「解釋」(適應)'all_edges.select(「col1」)''all_edges.select(「col1」,Seq():_ *)' – huitseeker