小编swa*_*001的帖子

RDD join : 加入两个不同的对RDD后,结果RDD键值和顺序是否发生了变化?

我有两对 RDD 可以说

 RDD1 : [(1,a),(2,b),(3,c)]    
 RDD2 : [(1,d),(2,e),(3,f)]
Run Code Online (Sandbox Code Playgroud)

现在我使用 join 加入这些 RDD

 RDD3 = RDD1.join(RDD2);
Run Code Online (Sandbox Code Playgroud)

我用下面的代码显示了 RDD3 中的元素

 for(Tuple2<Integer,Tuple2<String,String>> tuple : RDD3.collect()) 
                      System.out.println(tuple._1()+":"+tuple._2()._1()+","+tuple._2()._2());
Run Code Online (Sandbox Code Playgroud)

我见过奇怪的结果,比如

5:b,e
4:a,d 
6:c,f
Run Code Online (Sandbox Code Playgroud)

正如我预期的那样

1:a,d
1:b,e 
1:c,f
Run Code Online (Sandbox Code Playgroud)

有没有办法获得像上面那样的所需输出?或者我错误地解释了 RDD 行为?请建议

编辑 :

其实我正在阅读这样的数据

JavaDoubleRDD data1 = sc.parallelizeDoubles(Arrays.asList(45.25,22.15,33.24));
JavaDoubleRDD data2 = sc.parallelizeDoubles(Arrays.asList(23.45,19.35,12.45));
Run Code Online (Sandbox Code Playgroud)

进而

JavaPairRDD<Double,Double> lat1 = data1.cartesian(data1);
JavaRDD<Double> lat2 = lat1.map(new Function<Tuple2<Double,Double>,Double>() {
    @Override
    public Double call(Tuple2<Double,Double> t) {
        return Math.pow(t._1()-t._2(),2);
    }
});
 //flag and flag1 are static variables initially equal to 1
JavaPairRDD<Integer,Double> lat3 = …
Run Code Online (Sandbox Code Playgroud)

java join apache-spark rdd

0
推荐指数
1
解决办法
6953
查看次数

标签 统计

apache-spark ×1

java ×1

join ×1

rdd ×1