Я новичок в pyspark. Я пытался умножить два разреженных RDD. Код, который я пробовал, генерирует две разреженные матрицы, и я написал функцию для умножения двух СДР, но я думаю, что это не решение, поскольку вычисления не выполняются параллельно. Может ли кто-нибудь помочь мне с этим? Как я могу умножить СДР параллельно? Я перепробовал много ресурсов на сайтах, но не смог найти решение.
import findspark
findspark.init()
import numpy as np
import pyspark
import random
from scipy.sparse import rand
sc = pyspark.SparkContext(appName="matrix")
np.random.seed(42)
n=4
x = rand(n, n, density=0.25)
y = rand(n, n, density=0.25)
A = x.A
B = y.A
rdd_x = sc.parallelize(A)
rdd_y = sc.parallelize(B)
def multiply(r1, r2):
A = r1.collect()
B = r2.collect()
result = []
for i in range(len(B[0])):
total = 0
for j in range(len(A)):
total += A[j] * B[j][i]
result.append(total)
return result
C = multiply(rdd_x,rdd_x)
print(C)
sc.stop()