scala: метод, который возвращает varargs - PullRequest
0 голосов
/ 07 июня 2018

Из метода scala я хочу вернуть переменное число столбцов Spark, например:

def getColumns() : (Column*) = {...}

Эта идея заключается в том, чтобы использовать его с искрой sql:

myDf.select(getColumns, "anotherColumns"..)

Дело в том, что у меня около 30 запросов, которые имеют одно и то же предложение select, которое я хочу объединить.

Есть идеи, что заменить на ...?Я пробовал что-то вроде:

($"col1", "$col2")

, но он не компилируется.

1 Ответ

0 голосов
/ 07 июня 2018

Попробуйте это:

val df = Seq((1,2,3,4),(5,6,7,8)).toDF("a","b","c","d")

Typecast String для запуска столбцов с помощью функции карты и добавления дополнительного столбца в массив по мере необходимости.

val lstCols = List("a","b")
df.select(lstCols.map(col) ++ List(col("c"),col("d")): _*).show()   

+---+---+---+---+
|  a|  b|  c|  d|
+---+---+---+---+
|  1|  2|  3|  4|
|  5|  6|  7|  8|
+---+---+---+---+
...