web-dev-qa-db-ja.com

spark=のどの関数を使用して、2つのRDDをキーで結合します

次の2つのRDDがあり、次のキーペア値があるとします。

rdd1 = [ (key1, [value1, value2]), (key2, [value3, value4]) ]

そして

rdd2 = [ (key1, [value5, value6]), (key2, [value7]) ]

今、私はキー値でそれらを結合したいので、例えば、私は次を返したい

ret = [ (key1, [value1, value2, value5, value6]), (key2, [value3, value4, value7]) ] 

spark PythonまたはScalaを使用して、これを行うにはどうすればよいですか?キーと値のペアごとに1つのタプルのみが必要です。

18
MetallicPriest

2つのRDDを結合し、reduceByKeyを使用して値をマージします。

(rdd1 union rdd2).reduceByKey(_ ++ _)
7
maasg

joinを使用してから、結果のrddをmapを使用します。

rdd1.join(rdd2).map(case (k, (ls, rs)) => (k, ls ++ rs))
7
lmm