2017-10-04 5 views
1

Ich habe Listen von Tupeln, die ich zu einer Liste kombinieren möchte. Ich war in der Lage, die Daten zu verarbeiten, indem ich lambdas verwendete und das Verständnis auflistete, wo ich nahe daran bin, reduceByKey zu benutzen, aber nicht sicher, wie man die Listen mergt. Also das Format ...Liste der Listen in pySpark RDD zusammenfügen

[[(0, 14), (0, 24)], [(1, 19), (1, 50)], ...] 

Und ich möchte es so sein ....

[(0, 14), (0, 24), (1, 19), (1, 50), ...] 

Code, der mich da, wo ich sein muss ...

test = test.map(lambda x: (x[1], [e * local[x[1]] for e in x[0]])) 
test = test.map(lambda x: [(x[0], y) for y in x[1]]) 

Aber nicht sicher, von dort aus, was für die Bereitstellung des Hinweises der Listen

+1

Verwenden Sie 'flatten' anstatt manuell zu explodieren. – mrsrinivas

+0

Hmm. Ok, ich dachte darüber nach, aber aus irgendeinem Grund dachte ich nicht, dass es der richtige Weg war. Ich werde einen Blick – cpd1

+0

Sie können sogar 'test.flatMap (Identität)' – mrsrinivas

Antwort

2

Sie tun können,

test = test.flatMap(identity) 

oder

test = test.flatMap(lambda list: list) 
+0

Überprüfen Sie dies [Link für Scala und Spark] (https://stackoverflow.com/q/28233405/1592191) – mrsrinivas

0

Dank @mrsrinivas zu verschmelzen zu tun ...

test = test.flatMap (Lambda xs: [(x [0], x [1]) für x in xs])