这是两个RDD:
rdd1 = sc.parallelize(("a","b"))
rdd2 = sc.parallelize((("a", 3), ("b", 5), ("c",4)))
我想用data1中的键过滤rdd2。结果应该是
[('a', 3), ('b', 5)]
如果RDD的大小很小,我可以收集并广播rdd1,然后使用过滤器转换来获得结果。
但是,rdd1的大小很大。所以我现在使用的方法是连接函数:
rdd1.map(lambda x : (x,1)).join(rdd2).mapValues(lambda x : x[1])
由于连接成本随着数据的大小而增加,是否有更好的结果?