2016-12-07 11 views
1

複数のデータフレーム列を1つの文字列配列に "マージ"する方法を知りたいですか?それは次のようになりますので、私はそれを変換するにはどうすればよいSpark Dataframe列を文字列配列の単一の列に変換する方法

scala> df.show 
+---+----+------+-------+ 
| Id|Name|Number|Comment| 
+---+----+------+-------+ 
| 1|Jack| 125| Text| 
| 2|Mary| 152| Text2| 
+---+----+------+-------+ 

scala> df.printSchema 
root 
|-- Id: integer (nullable = false) 
|-- Name: string (nullable = true) 
|-- Number: string (nullable = true) 
|-- Comment: string (nullable = true) 

val df = sqlContext.createDataFrame(Seq((1, "Jack", "125", "Text"), (2,"Mary", "152", "Text2"))).toDF("Id", "Name", "Number", "Comment") 

次のようになります。たとえば

、私はこのデータフレームを持って

scala> df.show 
+---+-----------------+ 
| Id|    List| 
+---+-----------------+ 
| 1| [Jack,125,Text]| 
| 2| [Mary,152,Text2]| 
+---+-----------------+ 

scala> df.printSchema 
root 
|-- Id: integer (nullable = false) 
|-- List: Array (nullable = true) 
| |-- element: string (containsNull = true) 

答えて

6

org.apache.spark.sql.functions.array

import org.apache.spark.sql.functions._ 
val result = df.select($"Id", array($"Name", $"Number", $"Comment") as "List") 

result.show() 
// +---+------------------+ 
// |Id |List    | 
// +---+------------------+ 
// |1 |[Jack, 125, Text] | 
// |2 |[Mary, 152, Text2]| 
// +---+------------------+ 
+0

ありがとうございました。これは正解です。しかし、これを前にして、次の問題に遭遇しました。それは具体的に関連していないので、私は新しい質問を作成しました。それを確認してください、多分私を助けることができます:http://stackoverflow.com/questions/41245227/spark-dataframe-schema-definition-using-reflection-with-case-classes-and-column –

+0

これは役に立ちます私はたくさん! –

関連する問題