Spark中矢量之间的平方距离

时间:2015-11-15 15:46:12

标签: scala hadoop apache-spark

我试图在火花中使用平方距离函数,但似乎没有任何效果。我尝试了Vector.sqdist,但得到了这个错误" sqdist不是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)
     }
  }

我的建造

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 个答案:

答案 0 :(得分:3)

scala.collection.immutable.Vectororg.apache.spark.mllib.linalg.Vector不同。此外,sqdistVectors对象而非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)进行编译,并且在1.3.0中引入了sqdist