Disons que j'ai les deux RDD suivants, avec les valeurs de paire de clés suivantes.
rdd1 = [ (key1, [value1, value2]), (key2, [value3, value4]) ]
et
rdd2 = [ (key1, [value5, value6]), (key2, [value7]) ]
Maintenant, je veux les joindre par des valeurs clés, donc par exemple, je veux retourner ce qui suit
ret = [ (key1, [value1, value2, value5, value6]), (key2, [value3, value4, value7]) ]
Comment puis-je faire cela, dans spark using Python ou Scala? Une façon consiste à utiliser join, mais join créerait un tuple à l'intérieur du tuple. Mais Je veux avoir un seul tuple par paire de valeurs clés.
J'unirais les deux RDD et à un ReduceByKey pour fusionner les valeurs.
(rdd1 union rdd2).reduceByKey(_ ++ _)
Utilisez simplement join
puis map
le rdd résultant.
rdd1.join(rdd2).map(case (k, (ls, rs)) => (k, ls ++ rs))