2017-12-29 2 views
0

아래의 파이프 라인 된 RDD를 데이터 프레임으로 변환하려고합니다. -파이프 라인 된 RDD를 pyspark의 Dataframe으로 변환하는 중 오류가 발생했습니다.

파이프 라인 RDD> user_rdd

['new_user1', 
'new_user2', 
'Onlyknows', 
'Icetea', 
'_coldcoffee_'] 

가 나는 아래의 오류가 무엇입니까

schema = StructType([StructField('Username', StringType(), True)]) 
user_df = sqlContext.createDataFrame(user_rdd,schema) 
mention_df.show(20) 

아래의 코드를 사용하여 변환하려고 :

ValueError: Unexpected tuple 'new_user1' with StructType 

내가 시도 toDF를 사용하여 () :

user_df=user_rdd.toDF() 

발생한 오류는이 시간 :

TypeError: Can not infer schema for type: <type 'str'> 

이 pyspark를 사용하여 dataframe이를 변환하는 방법이 있는지 알려주세요.

+0

무슨 일이 할 경우 : user_df = sqlContext.createDataFrame (user_rdd (1), 스키마)? – Kev1n91

+0

TypeError : 'PipelinedRDD'객체를 호출 할 수 없습니다. (1)을 사용하여 실행을 시도 할 때 오류 메시지와 함께 유형 오류가 발생합니다. 인덱싱이 지원되지 않으므로 [1]도 작동하지 않습니다. –

+0

[Create Spark DataFrame. 형식에 대한 스키마를 추론 할 수 없습니다. ] (https://stackoverflow.com/questions/32742004/create-spark-dataframe-can-not-infer-schema-for-type-type-float) – user6910411

답변

1

rdd는 기본적으로 1d 데이터 인 문자열 목록입니다. 데이터 프레임에는 2d 데이터가 필요합니다. 이 문제를 해결해야 튜플에 RDD의 각 요소를 변환 :

user_df = sqlContext.createDataFrame(user_rdd.map(lambda x: (x,)), schema) 
#            ^^^^^^^^^^^^^^^^^^^ 
user_df.show() 
+------------+ 
| Username| 
+------------+ 
| new_user1| 
| new_user2| 
| Onlyknows| 
|  Icetea| 
|_coldcoffee_| 
+------------+ 
+0

우수한. 정말 고맙습니다. 그것은 일했다 !!! –

+0

@shankarBalu 도움이 되니 기쁩니다. – Psidom

관련 문제