2017-04-04 4 views
0

이 스키마가 있으며 col1 : EventCode, col2 : Message 등을 갖기 위해 결과를 열로 분할하고 싶습니다. Pyspark, 나는 explode 함수를 시도했지만 structType에서 작동하지 않는 것 같습니다. Spark에서이 작업을 수행하는 방법이 있습니까?Pyspark에서 데이터 행의 행을 나누기

root 
|-- result: struct (nullable = true) 
| |-- EventCode: string (nullable = true) 
| |-- Message: string (nullable = true) 
| |-- _bkt: string (nullable = true) 
| |-- _cd: string (nullable = true) 
| |-- _indextime: string (nullable = true) 
| |-- _pre_msg: string (nullable = true) 
| |-- _raw: string (nullable = true) 
| |-- _serial: string (nullable = true) 
| |-- _si: array (nullable = true) 
| | |-- element: string (containsNull = true) 
| |-- _sourcetype: string (nullable = true) 
| |-- _time: string (nullable = true) 
| |-- host: string (nullable = true) 
| |-- index: string (nullable = true) 
| |-- linecount: string (nullable = true) 
| |-- source: string (nullable = true) 
| |-- sourcetype: string (nullable = true) 

답변

1

데이터 프레임의 행을 간단한 행으로 나누는 것은 쉽습니다. 데이터 프레임의 모든 열을 선택하고 다른 데이터 프레임에 할당하기 만하면됩니다. 이런 식으로 뭔가 :

simpleDF = df.select("result.*") 
그것은 다음과 같은 스키마로 위의 주어진 스키마를 변환합니다

:

simpleDF.printSchema 

root 
|-- EventCode: string (nullable = true) 
|-- Message: string (nullable = true) 
|-- _bkt: string (nullable = true) 
|-- _cd: string (nullable = true) 
|-- _indextime: string (nullable = true) 
|-- _pre_msg: string (nullable = true) 
|-- _raw: string (nullable = true) 
|-- _serial: string (nullable = true) 
|-- _si: array (nullable = true) 
| |-- element: string (containsNull = true) 
|-- _sourcetype: string (nullable = true) 
|-- _time: string (nullable = true) 
|-- host: string (nullable = true) 
|-- index: string (nullable = true) 
|-- linecount: string (nullable = true) 
|-- source: string (nullable = true) 
|-- sourcetype: string (nullable = true) 
관련 문제