2016-02-25 34 views
0

我有一个很简单的要求,我需要做类似于逻辑与上相同数量的元素的2个独立的JavaRDD相应的元件的操作。 我试图看看如果没有收集到内存中的元素,并执行该功能,这是否可以完成。执行逻辑和2个独立的JavaRDD

我试图避免

JavaRDD<String> set1; 
JavaRDD<String> set2; 
List<String> list1 = set1.collect(); 
List<String> list2 = set2.collect(); 
List<Integer> result = new ArrayList<>(); 
for(int i = 0; i< list1.size(); i++) { 
    list1.get(i).equals(list2.get(i)) ? result.add(i, 1) : result.add(i,0); 
} 

这是可能做到这一点分配?我的JavaRDD都是按照GB的顺序排列的。 任何想法?

回答

0

你可以使用set1.zip(set2)这两组元素方面的结合。

根据你的榜样,类似于

JavaRDD<Integer> result = set1.zip(set2).map(new Function<Tuple2<String, String>, Integer>() { 
    public Integer call(Tuple2<String, String> t) { 
     if (t._1().equals(t._2()) { 
      return 1; 
     } else { 
      return 0; 
     } 
    } 
}) 
+0

感谢的东西。这工作。 –