在Spark中使用共享变量

时间:2018-01-04 06:38:00

标签: java apache-spark

您好我正在使用BLAS在Spark中进行一些数学运算。我得到2 JavaPairRDDs两个都有 Double [] 字段,我想按照以下方式计算点积:< / p>

userPairRDD.cartesian(itemPairRDD).mapToPair(
                    new PairFunction<Tuple2<Tuple2<String, Double[]>, Tuple2<String, Double[]>>, String, ItemAndWeight>() {
                        @Override
                        public Tuple2<String, ItemAndWeight> call(Tuple2<Tuple2<String, Double[]>, Tuple2<String, Double[]>> tuple2Tuple2Tuple2) throws Exception {
                            BLAS.getInstance().ddot("......");
                            .......
                        }
                    }
            )

我的问题是,在我的调用()中,每次可能效率低下时我都会调用 BLAS.getInstance(),我是否只能在{{}之外创建一个BLAS对象{1}})并且只是做ddot()的对象? 有没有必要小心,因为这是一个分布式程序?提前谢谢。

1 个答案:

答案 0 :(得分:0)

在这种情况下,您不需要共享变量。 BLAS.getInstance()只返回一个静态/单例实例,所以这里没有低效的东西。