使用 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-submit 启动 Python 应用程序
为啥 AWS EMR 上的 Spark 不从应用程序 fat jar 加载类?