【发布时间】:2019-02-24 00:05:25
【问题描述】:
我是新来的火花。我的问题如下。我已经有一个带有数据的 pairRDD。现在,我需要对其应用映射转换,以便我返回一个具有新值的新 RDD,该值取决于映射函数内部的一些内部转换,如下所示。 (伪代码)
JavaPairRDD<Long,Long> originalRDD = .... //the one i load from the dataset
JavaPairRDD<Long,Long> anotherrdd = ......; //the source of tuples
JavaPairRDD<Tuple2<Long, Long>, Long> result = anotherrdd
.mapToPair(tuple-> {
JavaRDD<Long> aux1;
JavaRDD<Long> aux2;
aux1 = originalRDD.filter(T -> T._1.equals(tuple._1)).values().flatMap(f -> f);
aux2 = originalRDD.filter(T -> T._2.equals(tuple._2)).values().flatMap(f -> f);
JavaPairRDD<Long,Long> auxfinal = aux1.intersect(aux2);
//some other code here that process auxfinal and returns a
//new tuple to RESULT(rdd)
});
如果我以这种方式编码,执行程序是否会创建新作业(用于过滤器和交叉点)并自行启动它们?还是火花上下文会意识到这一点并为此创造新的工作?我一直在阅读官方文档,但他们没有说明在这种情况下会发生什么。 提前致谢!
【问题讨论】:
标签: java apache-spark