5
我正在嘗試使用Apache Spark和Python進行矩陣乘法。python的火花矩陣乘法
這裏是我的數據
from pyspark.mllib.linalg.distributed import RowMatrix
我的矢量
rows_1 = sc.parallelize([[1, 2], [4, 5], [7, 8]])
rows_2 = sc.parallelize([[1, 2], [4, 5]])
我maxtrix的RDD
mat1 = RowMatrix(rows_1)
mat2 = RowMatrix(rows_2)
我願做這樣的事情:
mat = mat1 * mat2
我寫了一個函數來處理矩陣乘法,但我恐怕有一個很長的處理時間。這裏是我的功能:
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
我的功能做了很多火花動作(take,collect等)。該功能是否需要大量的處理時間? 如果有人有另一個想法,它會對我有幫助。
謝謝您的回答。但它不適合我。我正在使用Spark 1.5.0。以下是錯誤消息:** AttributeError:'BlockMatrix'對象沒有屬性'multiply'** – Raouf
它已在1.6中引入。 – zero323
好的,我明白了。我創建了一個函數來處理它(請參閱上面的帖子)。 – Raouf