2015-06-22 13 views
6

Spark ile iki RDD'ye python ile nasıl katılır? Varsayalım

rdd1 = ((a, 1), (a, 2), (b, 1)), 
rdd2 = ((a, ?), (a, *), (c, .)). 

((a, (1, ?)), (a, (1, *)), (a, (2, ?)), (a, (2, *))). 

Herhangi kolay yöntemler üretmek ister misiniz? Sanırım bu çapraz birleştirmeden farklı ama iyi bir çözüm bulamıyor. Çözümümün Sen çok basit katılmak, örneğin aradığınız

(rdd1 
.cartesian(rdd2) 
.filter(lambda (k, v): k[0]==v[0]) 
.map(lambda (k, v): (k[0], (k[1], v[1])))) 
+1

Açıkladığınız şey aslında bir doğal birleştirme. Çapraz birleştirmek sadece bir Kartezyen ürünüdür. – zero323

cevap

11

olduğunu

rdd = sc.parallelize([("red",20),("red",30),("blue", 100)]) 
rdd2 = sc.parallelize([("red",40),("red",50),("yellow", 10000)]) 
rdd.join(rdd2).collect() 
# Gives [('red', (20, 40)), ('red', (20, 50)), ('red', (30, 40)), ('red', (30, 50))] 
+0

Bu gerçekten yararlıdır. Teşekkür ederim. –

İlgili konular