Если вы можете гарантии, что два РДУ имеют одинаковое число элементов и разделы, вы можете достичь желаемого результата с rdd.zip
, а затем повторно формировать получившиеся пары:
rdd1.zip(rdd2).map{case ((a1,a2),(b1,b2))=> (a1,a2,b1,b2)}
Если два RDD отличаются количеством элементов или разделов, вам понадобится ключ, чтобы присоединиться к ним. Индексация их не очень эффективным, но будет служить цели, хотя решение предметно-специфические (если таковые имеются) будет намного лучше:
val indexed1 = rdd1.zipWithIndex.map(tuple => tuple.swap)
val indexed2 = rdd2.zipWithIndex.map(tuple => tuple.swap)
val joined = indexed1.join(indexed2)
val result = joined.map{case (k,((a1,a2),(b1,b2))) => (a1,a2,b1,b2)}
Было бы лучше, если бы вы объяснить 'rdd' и вставить часть своего кода Вот. –