如何加入两个特殊的RDD?

问题描述:

一个是如何加入两个特殊的RDD?

rdd1 : JavaPairRDD<Tuple2<String,String>,Integer> 

另一个是

rdd2 : JavaPairRDD<String,Integer> 

我想去的地方Tuple2._1在RDD1集等于在RDD2关键加入RDD1集和RDD2。例如,((“a”,“b”),1)和(“a”,2)将生成((“a”,“b”),1,2)。 当我映射RDD1集到:

rdd3 : JavaPairRDD<String, Tuple2<String, Integer>> 

,并尝试使用rdd3.join(RDD2),它出现了“只可以连接元组(而不是 “STR”),以元组”。 是否有加入rdd1和rdd2并获得我想要的结果的解决方案?

地图RDD1集到:

JavaPairRDD<String, Tuple2<Tuple2<String,String>,Integer>> 

的东西,如:

x -> new Tuple2(x._1._1, x) 

使用标准加入,并再次映射得到想要的结果

+0

非常感谢你。我很抱歉,我试图在Python中思考,所以导致了错误。 python中的转换与java中的转换不同。 – volity

+0

当然:)我认为相同的逻辑应该在Python中工作。 'rdd1.map(lambda x:(x [0],x))。join(rdd2))。map(...)' – 2016-11-20 14:49:44

+0

你说得对。我很惭愧。请看看我说的。 – volity