2017-08-07 113 views
-3

因此,我有一个数据框和列名称列表,我需要将其放入数组函数中,以便我可以使用.withColumn函数将名称传递到UDF中。我想要的是array("col1","col2","col3")。我试图让名成序列,做一个循环是这样的:Scala如何将元素集合到数组函数中

array(for(i <- 0 to names.length-1)names(i)) 

,但问题是这样的for循环不返回任何值。但是如果我为收益循环做了一件事,那么它会将我想要的所有元素放入一个集合中,但我需要将它们分别提取出来。

关于如何解决这个问题的任何想法?

为了使问题更清楚....数组是一个函数,而不是一个集合。数组是集合。

实施例:

scala> array("col1","col2","col3") 
res20: org.apache.spark.sql.Column = array(col1, col2, col3) 

我需要:我有序列val names = Seq("col1","col2","col3")和我需要的SEQ内的元件被投入到阵列功能。

+0

'names.split( “”)' – philantrovert

+0

@philantrovert这是我回报的集合,我并不需要一个集合 – Anna

+0

你'array'和Scala'Array'是不同的?如果不是阵列,你想要什么? – philantrovert

回答

1

这应该这样做:

import org.apache.spark.sql.function.{col, array} 

val names = "col1,col2,col3" 

val cols = names.split(",").map(col(_)) 

val arrayCols = array(cols: _*) 
+0

拯救了我的生命!非常感谢! – Anna

相关问题