使用 spark 在 aws 上的 python 中的大矩阵的 SVD

Posted

技术标签:

【中文标题】使用 spark 在 aws 上的 python 中的大矩阵的 SVD【英文标题】:SVD of large matrix in python on aws using spark 【发布时间】:2017-11-10 17:08:00 【问题描述】:

我正在将一个应用程序迁移到 AWS,该应用程序需要计算一个大型对称正值矩阵,然后进行 SVD/特征分解以恢复一些关键特征向量和特征值。矩阵的边缘大小可能是 100K 或更多,因此我正在寻找 Spark 中的分布式运算符,以比直接 scipy/numpy svd 运算符更快地执行 SVD。我不是在假设稀疏。有人可以建议如何使用 Spark 执行 SVD?

【问题讨论】:

不是答案(与 Spark 无关),但 MathSE question 可能会有所帮助。 看看stanford.edu/~rezab/papers/linalg.pdf 您的 Spark 版本是多少? SVD 功能已added in 2.2 【参考方案1】:

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

【讨论】:

以上是关于使用 spark 在 aws 上的 python 中的大矩阵的 SVD的主要内容,如果未能解决你的问题,请参考以下文章

AWS EMR 上的 Spark:使用更多执行器

AWS 上 DC/OS 集群上的 Spark 作业

在 AWS EMR 中使用 spark-submit 启动 Python 应用程序

为啥 AWS EMR 上的 Spark 不从应用程序 fat jar 加载类?

必须将主 url 设置为您的配置(AWS 上的 Spark scala)

zeppelin aws中的spark python错误运行程序