2016-12-10 10 views
0

を対応させてRDD2の鍵を交換するにはどうすればよい私は2つのRDDにその共有鍵を持っていますが、2つのRDDその共有キーが異なる値と私はRDD1値

RDD1 =(キー、VALUE1)

のような異なる値を持ちますRDD2 =((キー、キー)、値2)

結果=((値1、VALUE1)、値2)

にRDD1値を対応さRDD2の鍵を交換するあなたは、私は思います可能ですか?出力として

rdd1 = sc.parallelize([(1, "ABCD"), (2,"CDFE"), (3,"FDFD")]) 
rdd2 = sc.parallelize([(1,2),1), ((1,3), 0), ((2,3),1)]) 

私はどうなるのか

result = ([("ABCD","CDFE"),1), (("ABCD","FDFD"), 0), (("CDFE","FDFD"),1)]) 

答えて

1

は、データフレームの両方RDDSを回しているたいと思います。最初の列はkeyA、valAは2番目のkeyB1、keyB2、valB

これらの間で結合を行います。このような何か:

df1 = dfB.join(dfA, on dfA["keyA"] == dfB["keyB1]).withColumnRenamed("valA", "firstKey") 
df2 = df1.join(dfA, on dfA["keyA"] == df1["keyB2]).withColumnRenamed("valA", "secondKey") 

は今、あなたのデータフレームだけでRDDとマップに戻って変換し、値のキーとvalBのためのfirstKeyとsecondKey列があります。 RDDで

0

rdd1.join(rdd1.join(
    rdd2.keyBy(lambda x: x[0][0] 
)).values().keyBy(lambda x: x[1][0][1])).values() \ 
    .map(lambda x: ((x[0], x[1][0]), x[1][1][1])) 
関連する問題