Как следует из другого ответа, вы можете преобразовать в фрейм данных и join
. Если вы хотите продолжить только с rdd
, вы можете сделать это,
import numpy as np
a = np.array([[1,2],[3,4],[11,6],[7,8], [1, 2], [7,8]])
b = np.array([[1,2,100],[3,4,200],[5,6, 300],[7,8, 400]])
RDDa = sc.parallelize(a)
RDDb = sc.parallelize(b)
dsmRDD = RDDa.zipWithIndex()\
.map(lambda x: (tuple(x[0].tolist()),(0,x[1])))\
.leftOuterJoin(RDDb.map(lambda x: (tuple(x[:2].tolist()), x[2])))\
.map(lambda x: (x[1][0][1], x[1][1]) if x[1][1] is not None else (x[1][0][1],x[1][0][0]))
output = map(lambda x:x[1], sorted(dsmRDD.collect()))
print output
, который дает вам вывод,
[100, 200, 0, 400, 100, 400]