我有两对RDD,比如说
astype
现在使用join
加入这些RDD RDD1 : [(1,a),(2,b),(3,c)]
RDD2 : [(1,d),(2,e),(3,f)]
我已经在RDD3中显示了以下代码
的元素 RDD3 = RDD1.join(RDD2);
我见过像
这样奇怪的结果 for(Tuple2<Integer,Tuple2<String,String>> tuple : RDD3.collect())
System.out.println(tuple._1()+":"+tuple._2()._1()+","+tuple._2()._2());
像我预期的那样
5:b,e
4:a,d
6:c,f
有没有办法获得如上所述的所需输出? 或者错误地解释RDD行为?请建议
编辑:
其实我正在读这样的数据
1:a,d
1:b,e
1:c,f
然后
JavaDoubleRDD data1 = sc.parallelizeDoubles(Arrays.asList(45.25,22.15,33.24));
JavaDoubleRDD data2 = sc.parallelizeDoubles(Arrays.asList(23.45,19.35,12.45));
所以我们正在做的是根据纬度和经度值计算权重矩阵
答案 0 :(得分:3)
当我这样做时:
scala> val rdd1 = sc.parallelize(Array((1,"a"),(2,"b"),(3,"c")))
scala> val rdd2 = sc.parallelize(Array((1,"d"),(2,"e"),(3,"f")))
scala> val rdd3 = rdd1.join(rdd2)
scala> rdd3.toArray.foreach(println(_))
我一直得到:
(1,(a,d))
(2,(b,e))
(3,(c,f))
答案 1 :(得分:0)
这就是我尝试的预期结果:
val data1 = sc.parallelize(Array((1,"a"),(2,"b"),(3,"c")))
val data2 = sc.parallelize(Array((1,"d"),(2,"e"),(3,"f")))
val data3 = data1.join(data2)
data3.collect().map(tuple => tuple._1 + ":"+tuple._2._1+","+tuple._2._2).foreach(println(_))
获得:
1:a,d
2:b,e
3:c,f
所以这是scala。我想在Java中应该是相同的输出。