如何减少执行SVD的Spark作业的运行时间

时间:2018-07-25 10:06:36

标签: apache-spark apache-spark-mllib

我有一个庞大的稀疏矩阵(它具有约300k行和列,每行具有〜7000个非零值),我需要使用奇异值分解(SVD)对其进行分解。为此,我使用了“ pyspark.mllib.linalg.distributed.IndexedRowMatrix”类的“ computeSVD”方法,该过程花了28个小时(我使用了最大数量的可用执行器和内存)。

火花作业正在读取的数据的格式为“ RowIndex(int),ColumnIndex(int),MatrixEntry(float)”,即“ 1,2,0.5”意味着该矩阵的值为0.5在第一行和第二列。

当然,如果可以的话,我想减少Spark作业的运行时间,为此,我想到了将“ MatrixEntry”更改为整数类型的方法,例如(将每个条目乘以100并四舍五入)到最接近的整数。 (例如,将0.123转换为12)。

1)那对我有帮助吗?

2)还有其他减少运行时间的建议吗?

非常感谢!

0 个答案:

没有答案