我正在将应用程序迁移到AWS,需要计算一个大的对称正值矩阵,然后进行SVD /特征分解以恢复一些关键的特征向量和特征值。矩阵的边缘大小可能是100K或更多,所以我在Spark中寻找一个分布式运算符来比直接scipy / numpy svd运算符更快地执行SVD。我没有做出稀疏性的假设。有人可以建议如何使用Spark执行SVD吗?
答案 0 :(得分:0)
Spark版本2.2.0有一个用于奇异值分解的python api。
# convert your rdd into RowMatrix
rm = RowMatrix(data_rdd)
# if number of components you wish to retain is p then
svd = rm.computeSVD(p, True)
U = svd.U
S = svd.S
V = svd.V