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.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)进行编译,sqdist 已在 1.3.0 中引入。

【讨论】:

以上是关于Spark中向量之间的平方距离的主要内容,如果未能解决你的问题,请参考以下文章

平方反比定律是啥?

2021年度训练联盟热身训练赛第八场 B题 Gene Tree树中所有叶结点之间的距离平方和

Java中的向量距离计算-优化

怎么计算2个坐标点的距离?

NumPy之计算两个矩阵的成对平方欧氏距离

NumPy之计算两个矩阵的成对平方欧氏距离