Scala如何将集合中的元素放入数组函数中

时间:2017-08-07 13:40:57

标签: scala apache-spark spark-dataframe

所以我有一个数据帧,以及我需要放入数组函数的列名列表,所以我可以使用.withColumn函数将名称传递给UDF。

像这样:val names = "col1,col2,col3"我需要的是array("col1","col2","col3")。我试图将名字变成Seq并像这样做一个for循环:

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

但问题是这个循环没有返回任何值。但是,如果我为yield循环执行,那么它将我想要的所有元素放入集合中,但我需要单独提取它们。

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

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

示例:

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

我需要什么:我有序列val names = Seq("col1","col2","col3"),我需要将Seq中的元素放入数组函数中。

1 个答案:

答案 0 :(得分:1)

这应该做:

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

val names = "col1,col2,col3"

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

val arrayCols = array(cols: _*)