0
我以前發佈過一個關於900萬行和85K列座標矩陣乘法的問題。 Errors for block matrix multiplification in SparkPySpark RDD從scala到python的稀疏矩陣乘法
但是,我在DataProc上遇到了內存不足問題。我試圖配置高內存核心的羣集,但沒有運氣。
我讀這篇文章,並認爲這可能會在我的情況有所幫助: https://www.balabit.com/blog/scalable-sparse-matrix-multiplication-in-apache-spark/ 但是,他們提供的解決方案是Scala,這我不熟悉。有人可以將這段代碼翻譯成python嗎?謝謝一堆!
def coordinateMatrixMultiply(leftMatrix: CoordinateMatrix, rightMatrix: CoordinateMatrix):
CoordinateMatrix = {
val M_ = leftMatrix.entries.map({ case MatrixEntry(i, j, v) => (j, (i, v)) })
val N_ = rightMatrix.entries.map({ case MatrixEntry(j, k, w) => (j, (k, w)) })
val productEntries = M_
.join(N_)
.map({ case (_, ((i, v), (k, w))) => ((i, k), (v * w)) })
.reduceByKey(_ + _)
.map({ case ((i, k), sum) => MatrixEntry(i, k, sum) })
new CoordinateMatrix(productEntries)
}