2016-12-07 3 views
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") 

다음과 같습니다 예를 들어

,이 dataframe이

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

좋은 대답,이 도움이 Logged 나 많이! –

관련 문제