您好我正在使用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()的对象? 有没有必要小心,因为这是一个分布式程序?提前谢谢。
答案 0 :(得分:0)
在这种情况下,您不需要共享变量。 BLAS.getInstance()
只返回一个静态/单例实例,所以这里没有低效的东西。