2017-10-11 3 views
0

Ich habe ein Funke rdd die Werte in Unicode als Liste der Liste:Umwandlung rdd Liste der Liste Unicode-Werte in Zeichenfolge

ex_rdd.take(5) 
[[u'70450535982412348', u'1000000923', u'1'], 
[u'535982417348', u'1000000923', u'1'], 
[u'50535929459899', u'1000000923', u'99'], 
[u'8070450535936297811', u'1000000923', u'1'], 
[u'5937908667', u'1000000923', u'1']] 

So schreiben sie in eine hdfs Datei, wird es geben ein unicode error .Wie konvertiere ich sie in string und schreibe sie effizient in pyspark? hdfs Ausgabedatei sollte wie folgt aussehen -

70450535982412348,1000000923,1 
535982417348,1000000923,1 

und so weiter

+1

können Sie versuchen, sie zu kodieren? ex_rdd.map (lambda x: [y.encode ('utf-8') für y in x]) –

+0

yeah das kann gemacht werden, aber da datei ist riesig codieren alle werte ist wirklich nicht effizient – raul

Antwort

1

Sie join Funktion Python für Strings verwenden können, zusammen mit den map und saveAsTextFile Operationen auf pyspark.RDD Objekte (siehe Dokumentation here).

ex_rdd.map(lambda L: ','.join(L)).saveAsTextFile('/path/to/hdfs/save/file') 

Dies sollte auf sogar den früheren Versionen (> = 1.0) von PySpark verfügbar sein, wenn ich mich nicht irre.

Ich bin mir nicht sicher, was Sie mit "unicode error" meinen. Ist das eine Ausnahme in Python? Oder ist dies eine Ausnahme in den Java-Interna?

+0

arbeitete wie ein charm.thanks ! – raul

Verwandte Themen