Spark Matrix Multiplikation mit Python

Ich versuche, die Matrixmultiplikation mit Apache Spark und Python durchzuführen.

Hier sind meine Daten

from pyspark.mllib.linalg.distributed import RowMatrix

Meine RDD von Vektoren

rows_1 = sc.parallelize([[1, 2], [4, 5], [7, 8]])
rows_2 = sc.parallelize([[1, 2], [4, 5]])

My maxtrix

mat1 = RowMatrix(rows_1)
mat2 = RowMatrix(rows_2)

Ich würde gerne so etwas machen:

mat = mat1 * mat2

Ich habe eine Funktion geschrieben, um die Matrixmultiplikation zu verarbeiten, aber ich habe Angst, eine lange Verarbeitungszeit zu haben. Hier ist meine Funktion:

def matrix_multiply(df1, df2):
    nb_row = df1.count()    
    mat=[]
    for i in range(0, nb_row):
        row=list(df1.filter(df1['index']==i).take(1)[0])
        row_out = []
        for r in range(0, len(row)):
            r_value = 0
            col = df2.select(df2[list_col[r]]).collect()
            col = [list(c)[0] for c in col]
            for c in range(0, len(col)): 
                r_value += row[c] * col[c]
            row_out.append(r_value)            
        mat.append(row_out)
    return mat 

Meine Funktion macht eine Menge Funkenaktionen (nehmen, sammeln usw.). Benötigt die Funktion viel Verarbeitungszeit? Wenn jemand eine andere Idee hat, ist das für mich hilfreich.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage