- 行矩阵
RowMatrix
是最基础的分布式矩阵类型。 - 每行是一个
本地向量
,行索引无实际意义(即无法直接使用)。 - 数据存储在一个由行组成的RDD中,其中每一行都使用一个本地向量来进行存储。
- 由于行是通过本地向量来实现的,故列数(即行的维度)被限制在普通整型(integer)的范围内。
- 在实际使用时,由于单机处理本地向量的存储和通信代价,行维度更是需要被控制在一个更小的范围之内。
RowMatrix
可通过一个RDD[Vector]
的实例来创建
例子
import org.apache.spark.mllib.linalg
import org.apache.spark.mllib.linalg.Vectors
import org.apache.spark.mllib.linalg.distributed.RowMatrix
import org.apache.spark.mllib.stat.MultivariateStatisticalSummary
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, 2.0, 3.0)
val dv2: linalg.Vector = Vectors.dense(2.0, 3.0, 4.0)
val rows: RDD[linalg.Vector] = spark.sparkContext.parallelize(Array(dv1, dv2))
val matrix = new RowMatrix(rows)
println(matrix.numRows())
println(matrix.numCols())
val summary: MultivariateStatisticalSummary = matrix.computeColumnSummaryStatistics()
val max: linalg.Vector = summary.max
println(max)
println(summary.mean)
println(summary.count)
println(summary.variance)
}
}
总结
参考
Spark入门:MLlib基本数据类型(2)_厦大数据库实验室博客