目录
线性代数是数学的分支,专注于向量空间和线性运算,它们之间的映射主要由矩阵表示。Spark中的矩阵和向量可以在本地或以分布式方式进行操作。Spark中分布式矩阵的实现使用户能够跨越大量机器对大量数据进行线性代数运算。对于局部线性代数操作,Spark使用非常快的Breeze和jblas(Python的Numpy),并且它具有自己的分布式实现。
本地向量和矩阵实现
spark中的本地向量和矩阵实现位于org.apache.spark.mllib.linalg中。
生成本地向量
Spark中的本地向量使用DenseVector和SparseVector两个类实现,它们实现了一个名为Vector的通用接口,确保两个实现都支持完全相同的操作集。创建向量可以使用Vector类的dense和sparse方法。对于dense方法可以传入多个元素作为参数,也可以传入Array数组。sparse方法,则需要指定向量大小,索引数组和元素数组。
import org.apache.spark.mllib.linalg.{
Vectors,Vector}
val dv1:Vector = Vectors.dense(5.0,6.0,7.0,8.0)
val dv2:Vector = Vectors.dense(Array(5.0,6.0,7.0,8.0))
val sv:Vector = Vectors.sparse(