scala:返回varargs的方法

时间:2018-06-07 14:37:14

标签: scala apache-spark variadic-functions

从scala方法,我想返回一个变量编号的Spark列,如下所示:

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

然后将这个想法用于spark sql:

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

问题是,我有大约30个请求都具有相同的select子句,我想将它们放在一起。

知道用什么代替......?我试过像:

($"col1", "$col2")

但它没有编译。

1 个答案:

答案 0 :(得分:0)

试试这个:

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

Typecast使用map函数激活列的字符串,并根据需要在数组中添加添加列。

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|
+---+---+---+---+