2017-12-29 13 views
0

Ich versuche, die unter pipelined RDD in Datenrahmen zu konvertieren.Fehler beim Pipeline- RDD Umwandlung in pyspark zu Datenrahmen

Pipelined RDD -> user_rdd

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

Ich versuchte

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

Ich erhalte die folgenden Fehler mit dem folgenden Code zu konvertieren:

ValueError: Unexpected tuple 'new_user1' with StructType 

I toDF versucht, mit () auch:

user_df=user_rdd.toDF() 

Dieses Mal begegnet der Fehler ist:

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

Lassen Sie mich wissen, ob es einen Weg gibt, dies zu Datenrahmen zu konvertieren pyspark verwenden.

+0

, was passiert, wenn Sie dies tun: user_df = sqlContext.createDataFrame (user_rdd (1), Schema)? – Kev1n91

+0

TypeError: 'PipelinedRDD' -Objekt ist nicht aufrufbar - Erhalte einen Typfehler mit der Fehlermeldung, als ich versuchte, mit (1) auszuführen. Weder [1] funktioniert, da die Indizierung nicht unterstützt wird. –

+0

Mögliches Duplikat von [Create Spark DataFrame. Kann nicht Schema für Typen ableiten: ] (https://stackoverflow.com/questions/32742004/create-spark-dataframe-can-not-infer-schema-for-type-type-float) – user6910411

Antwort

1

Die rdd Sie haben, ist eine Liste von Strings, die im Wesentlichen 1d Daten ist; Ein Datenrahmen erfordert 2d Daten; Wandeln Sie jedes Element in der rdd zu einem Tupel sollte das Problem beheben:

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

Ausgezeichnet. Ich danke dir sehr. Es funktionierte !!! –

+0

@shankarBalu Gut, dass es hilft. – Psidom