我试图在火花中使用平方距离函数,但似乎没有任何效果。我尝试了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
您是否可以选择使用此功能?
由于
答案 0 :(得分:3)
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)进行编译,并且在1.3.0中引入了sqdist
。