Spark中向量之间的平方距离
Posted
技术标签:
【中文标题】Spark中向量之间的平方距离【英文标题】:SquaredDistance between Vectors in Spark 【发布时间】:2015-11-15 15:46:11 【问题描述】:我正在尝试在 spark 中使用平方距离函数,但似乎没有任何效果。我尝试了 Vector.sqdist 但收到此错误“sqdist is not member of scala.collections.......”(但文档显示它是我导入的 [org.apache.spark.mllib.linalg.Vector
] 的成员(http://spark.apache.org/docs/latest/api/scala/index.html#org.apache.spark.mllib.linalg.Vector)) .
/* SimpleApp.scala */
import org.apache.spark.SparkContext
import org.apache.spark.SparkContext._
import org.apache.spark.SparkConf
import org.apache.spark.mllib.linalg.Vectors
object SimpleApp
def main(args: Array[String])
val v1: org.apache.spark.mllib.linalg.Vector = Vectors.dense(5)
val v2: org.apache.spark.mllib.linalg.Vector = Vectors.dense(5)
Vectors.sqdist(v1, v2)
我的 sbt 构建
name := "Simple Project"
version := "1.0"
scalaVersion := "2.10.4"
libraryDependencies ++= Seq(
"org.apache.spark" % "spark-core_2.10" % "1.1.0",
"org.apache.spark" % "spark-mllib_2.10" % "1.1.0"
)
Spark 版本:1.5.0
你有没有替代如何使用这个功能?
谢谢
【问题讨论】:
【参考方案1】:scala.collection.immutable.Vector
与 org.apache.spark.mllib.linalg.Vector
不同。此外,sqdist
是Vectors
对象的方法,而不是Vector
。把这一切放在一起:
import org.apache.spark.mllib.linalg.Vectors
val v1: org.apache.spark.mllib.linalg.Vector = Vectors.dense(5)
val v2: org.apache.spark.mllib.linalg.Vector = Vectors.dense(5)
Vectors.sqdist(v1, v2)
// Double = 0.0
忽略上面您使用 Spark 1.1.0(不是 1.5.0)进行编译,sqdist
已在 1.3.0 中引入。
【讨论】:
以上是关于Spark中向量之间的平方距离的主要内容,如果未能解决你的问题,请参考以下文章