簡體   English   中英

Scala Spark - Select 列按名稱和列表

[英]Scala Spark - Select columns by name and list

我正在嘗試使用從列表中提取的單列名稱和名稱從 Scala Spark DataFrame 中的 select 列。 我目前的解決方案如下:

var cols_list = List("d", "e")

df
.select(
    col("a"),
    col("b"),
    col("c"),
    cols_list.map(col): _*)

但是,它會引發錯誤:

<console>:81: error: no `: _*' annotation allowed here
(such annotations are only allowed in arguments to *-parameters)
               cols_list.map(col): _*
                                        ^

任何幫助將不勝感激

select接受List[Column] ,因此您需要構建並提供該列表,例如

df.select(col("a") :: col("b") :: col("c") :: cols_list.map(col): _*)

您的代碼對我來說運行良好,您也可以使用 $ 表示法。

scala> df.select(cols_list.map(col):_*)
res8: org.apache.spark.sql.DataFrame = [d: int, e: int]

scala> df.select(cols_list.map(c => $"$c"):_*)
res9: org.apache.spark.sql.DataFrame = [d: int, e: int]

也許你只需要import spark.implicits._

額外:還要檢查您的變量名稱,這是 scala 中的命名約定,使用駝峰式大小寫並盡量避免使用 var (這只是一個很好的實踐問題,與您的錯誤完全無關)

val colsList = List("d", "e")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM