首先,spark里面有个机器学习的库MLlib,MLlib里面有个线性代数包linalg,linalg里面主要实现了稠密矩阵,向量,还有三种分布式矩阵,我们主要用到的就是这个linalg包下面的SVD分解和PCA。观察源代码,发现linalg里面引用了Breeze库。Breeze是什么呢?就看本博客的第一篇文章。简单的说Breeze是用scala语言实现的数值运算库,里面有linalg这种线性运算包,可以进行矩阵,甚至是张量运算。Breeze又隶属于ScalaNLP 工程。ScalaNLP又是什么呢?这就扯远了。。。主要是Breeze又基于netlib-java和 jblas.然后呢,netlib-java和