【发布时间】:2015-04-17 21:12:08
【问题描述】:
我是 spark 新手,不了解 mapreduce 机制如何与 spark 一起工作。我有一个只有双打的csv文件,我想要的是用第一个向量和其余的rdd进行操作(计算欧几里得距离)。然后迭代其他向量。它是否存在除此之外的其他方式?也许明智地使用笛卡尔积......
val rdd = sc.parallelize(Array((1,Vectors.dense(1,2)),(2,Vectors.dense(3,4),...)))
val array_vects = rdd.collect
val size = rdd.count
val emptyArray = Array((0,Vectors.dense(0))).tail
var rdd_rez = sc.parallelize(emptyArray)
for( ind <- 0 to size -1 ) {
val vector = array_vects(ind)._2
val rest = rdd.filter(x => x._1 != ind)
val rdd_dist = rest.map( x => (x._1 , Vectors.sqdist(x._2,vector)))
rdd_rez = rdd_rez ++ rdd_dist
}
感谢您的支持。
【问题讨论】:
标签: scala for-loop apache-spark