如何加入两个特殊的RDD?

时间:2016-11-20 13:24:37

标签: java apache-spark rdd

一个是

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

另一个是

rdd2 : JavaPairRDD<String,Integer>

我想加入rdd1和rdd2,其中rdd1中的Tuple2._1等于rdd2中的键。 例如,((“a”,“b”),1)和(“a”,2)将生成((“a”,“b”),1,2)。 当我将rdd1映射到:

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

并尝试使用rdd3.join(rdd2),它出现“只能将元组(不是”str“)连接到元组”。 有加入rdd1和rdd2并获得我想要的结果的解决方案吗?

1 个答案:

答案 0 :(得分:1)

将rdd1映射到:

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

有类似的东西:

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

使用标准连接并再次映射以获得所需结果