2016-04-05 12 views
0

Ich bin neu in Python spark, so dass diese Frage elementar sein könnte. Allerdings konnte ich hier und auf Google keine gute Antwort finden, also werde ich es trotzdem fragen.Hinzufügen eines Elements zu einer RDD in Abhängigkeit von einer Berechnung auf der gleichen RD

Ich möchte einige Elemente zu meiner RDD hinzufügen, abhängig von einigen Berechnungen, die ich auf dieser RDD. Sagen wir, mein RDD ist benannt Linien und enthält eine Zeichenfolge. Ich möchte zwei Zahlen hinzufügen, die Tab in der Datei getrennt ist. Dann füge diese Summe am Ende der Zeile rdd hinzu.

lines = sc.textFile("myFile.txt") 
#Splitting the string where there are tabs 
linesArr=lines.map(lambda line: line.split("\t")) 

Jetzt möchte ich die beiden ersten Zungen in linesArr hinzufügen zusammen und das Ergebnis am Ende der Zeilen hinzufügen.

Wie mache ich das?

+0

Ich habe es geschafft, die beiden ersten Elemente zusammenzufassen: theSum = linesArr (lambda x: sumFunction (x [0] + x [1]). – Sindre

Antwort

0

Für diejenigen von euch, die hier über die gleiche Sache sich fragen könnte, ist, wie ich es mit einem einfachen Beispiel gelöst:

n=sc.parallelize([(1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9)]) 

m=n.map(lambda x: x[0]+x[1]) 

z=n.zip(m).map(lambda x: (x[0][0],x[0][1],x[1])) 

z Das Ergebnis ist: [(1,1,2), (2, 2,4), ...] Beachten Sie, dass, wenn man die Karte auslässt, das Ergebnis [((1,1), 2), ((2,2), 4), ..] ist und ich nicht wollte das in diesem Fall.

Verwandte Themen