import org.apache.spark.mllib.linalg
import org.apache.spark.mllib.linalg.Vectors
import org.apache.spark.mllib.linalg.distributed.{CoordinateMatrix, RowMatrix}
import org.apache.spark.rdd.RDD
import org.apache.spark.sql.SparkSession
object Test {
def main(args: Array[String]): Unit = {
val spark: SparkSession = SparkSession.builder().master("local").getOrCreate()
//创建稠密向量
val dv1: linalg.Vector = Vectors.dense(1.0, 1.0, 3.0)
val dv2: linalg.Vector = Vectors.dense(2.0, 2.0, 4.0)
//使用两个本地向量创建一个RDD[Vector]
val rows: RDD[linalg.Vector] = spark.sparkContext.parallelize(Array(dv1, dv2))
//通过RDD[Vector]创建一个行矩阵
val matrix = new RowMatrix(rows)
//返回类型是CoordinateMatrix,一个矩阵,该矩阵下标为(x,y)的元素就是原矩阵第x列和第y列的相似度。
//MatrixEntry(0,1,0.9999999999999999) 就是第0列和第一列的相似度是0.9999999999999999
//MatrixEntry(1,2,0.9838699100999074)
//MatrixEntry(0,2,0.9838699100999074)
val matrix1: CoordinateMatrix = matrix.columnSimilarities()
matrix1.entries.foreach(println)
}
}
spark计算列与列之间的余弦相似度
最新推荐文章于 2024-06-20 09:00:00 发布