2017-09-11 10 views
1

으로 변환합니다. 일부 열에 문자열 배열이 있고 하나의 열에 중첩 배열이있는 pyspark 데이터 프레임이 있습니다. 따라서 데이터 프레임을 CSV에 쓸 수 없습니다.배열 <string>을 문자열 pyspark 데이터 프레임

+-------+--------------------+---------+ 
    |ID  |    emailed| clicked 
    +-------+--------------------+---------+ 
    |9000316|[KBR, NRT, AOR]  |[[AOR]] 
    |9000854|[KBR, NRT, LAX]  | Null 
    |9001996|[KBR, JFK]   |[[JFK]] 
    +-------+--------------------+---------+ 
나는 다음과 같은 구조를 좀하고 싶습니다

를 CSV로 저장하기 - 여기

내가 처리하고있는 dataframe의 예입니다.

+-------+--------------------+---------+ 
    |ID  |    emailed| clicked 
    +-------+--------------------+---------+ 
    |9000316|KBR, NRT, AOR  | AOR 
    |9000854|KBR, NRT, LAX  | Null 
    |9001996|KBR, JFK   | JFK 
    +-------+--------------------+---------+ 

나는 아주 새로운 pyspark입니다. 귀하의 도움을 크게 주시면 감사하겠습니다. 고맙습니다!

+1

'clicked '열은 항상'[[value]]'형식이거나'[[val1, val2 ...]]'형식일까요? –

답변

4

이 방법을 시도해 볼 수 있습니까? 모듈을 가져와야합니다.

import pyspark.sql.functions.* 
df.select(concat_ws(',', split(df.emailed)).alias('string_form')).collect() 

도움이되는지 알려주세요. 코드 링크에서 설명

----- 업데이트 ----, 나는 조금 수정했습니다.

from pyspark.sql.functions import * 
from pyspark.sql.types import * 

def getter(column): 

    for i,col in enumerate(column): 
     if i==1: 
      col_new=col 
     else: 
      col_new=col_new+','+col 
    return col_new 

getterUDF = udf(getter, StringType()) 

df.select(getterUDF(Ur_Array_Column)) 

이 방법을 사용해보십시오.

+0

위의 ans가 작동하는지 확실하지 않습니다. 내가 확인한대로, split은 문자열에 대해 작동합니다. Stack Overflow에서도이를 볼 수 있습니다. https://stackoverflow.com/questions/37689878/select-array-element-from-spark-dataframes-split-method-in-same-call –

+0

이 기능을 사용할 수 있습니다 : –

+0

고맙습니다. concat_ws이 (가) 나를 대신해 주셔서 감사합니다. – user42361