我有一个庞大的稀疏矩阵(它具有约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)还有其他减少运行时间的建议吗?
非常感谢!