2016-06-30 15 views
0

Hier ist die Arbeit, die ich bisher gemacht habe ich PySpark bin mit in einer CSV-Datei zu lesen:ein rdd in ein lokales Wörterbuch in PySpark Drehen

x = sc.textFile("file:///tmp/data.csv").map(lambda l: l.split(',')).map(clean) 

Clean ist einfach eine Funktion sauber, das nicht entfernt ASCII-Zeichen, da die Zeichenfolgen, die ich importiere, in "wie in u" eingeschlossen sind "Dies ist eine Zeichenfolge". Ich habe es analysiert und habe es in der Form 'Dies ist eine Zeichenfolge'. Ich habe diese Funktion selbst geschrieben (ich weiß nicht, ob es eine effizientere Möglichkeit gibt, dies zu tun, da ich mit Python ziemlich neu bin, aber es gibt nicht-ASCII-Zeichen, mit denen PySpark nicht umgehen kann. Ich verwende PySpark 2.6.6 kommt mit dem Hortonworks Sandbox.

Nun mein Problem ist, ich versuche, dies in einem Wörterbuch Struktur zu setzen. Es ist in den Speicher passen sollte, so habe ich versucht, .collectAsDict(), aber ich einen Laufzeitfehler erhalten.

Die Schlüssel sind einfach Zeichenfolgen (obwohl Unicode-Zeichenfolgen) daher, warum ich den Fehler bekomme.Es gibt eine gute Lösung?

Antwort

3

Wenn Ihre RDD eine Tuple-Struktur hat, können Sie die collectAsMap Operation verwenden, um Schlüssel-Wert-Paare aus zu erhalten die RDD als Wörterbuch.

Folgendes sollte funktionieren:

>>>> xDict = x.collectAsMap() 
>>>> xDict["a key"] 
Verwandte Themen