2017-08-07 10 views
-3

データフレームと、配列関数に入れる必要がある列名のリストがあるので、名前を.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")を持っていると私は、配列内の要素は、配列関数に貼り付ける必要があります。

+0

'names.split( "")' – philantrovert

+0

を、私はあなた 'array'とScalaの' Array'コレクション – Anna

+0

を必要としません。異なっています?配列でない場合はどうしますか? – philantrovert

答えて

1

これが何をすべき:それは私のコレクションを返します@philantrovert

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

関連する問題