¿Qué función en la chispa se utiliza para combinar dos RDD por teclas?

Digamos que tengo los siguientes dos RDD, con los siguientes valores de par de claves.

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

y

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

Ahora, quiero unirlos por valores clave, por ejemplo, quiero devolver lo siguiente

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

¿Cómo puedo hacer esto en spark usando Python o Scala? Una forma es usar join, pero join crearía una tupla dentro de la tupla. Pero quiero tener solo una tupla por par de valores clave.

Uniría los dos RDD y a un reduceByKey para combinar los valores.

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

Solo usa join y luego mapea el rdd resultante.

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