Sto provando a fare la moltiplicazione della matrice usando Apache Spark e Python.Spark Matrix moltiplicazione con python
Ecco i miei dati
from pyspark.mllib.linalg.distributed import RowMatrix
mio RDD di vettori
rows_1 = sc.parallelize([[1, 2], [4, 5], [7, 8]])
rows_2 = sc.parallelize([[1, 2], [4, 5]])
mio maxtrix
mat1 = RowMatrix(rows_1)
mat2 = RowMatrix(rows_2)
Vorrei fare qualcosa di simile:
mat = mat1 * mat2
Ho scritto una funzione per elaborare la moltiplicazione della matrice ma ho paura di avere un lungo tempo di elaborazione. Ecco la mia funzione:
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
La mia funzione esegue molte azioni di scintilla (prendere, raccogliere, ecc.). La funzione impiegherà molto tempo di elaborazione? Se qualcuno ha un'altra idea sarà utile per me.
Grazie per la risposta. Ma non funziona per me. Sto usando Spark 1.5.0. Ecco il messaggio di errore: ** AttributeError: l'oggetto 'BlockMatrix' non ha attributo 'multiply' ** – Raouf
È stato introdotto in 1.6. – zero323
Ok, capisco. Creo una funzione per elaborarla (vedi il post sopra). – Raouf