2016-07-04 17 views
-2

Ich habe zwei MatrizenMatrixmultiplikation in py-Funken RDD mit

# 3x3 matrix 
    X = [[10,7,3],[3 ,2,6],[5 ,8,7]] 
# 3x4 matrix 
    Y = [[3,7,11,2],[2,7,4,10],[8,7,6,11]] 

Ich möchte diese beiden in Funken mit RDD multiplizieren. Kann mir jemand dabei helfen? Diese Multiplikation sollte keine eingebaute Funktion verwenden.

konnte ich die 2 unter Verwendung von for-Schleife in Python multiplizieren, wie

 

    for i in range(len(X)): 
    # iterate through columns of Y 
     for j in range(len(Y[0])): 
    # iterate through rows of Y 
      for k in range(len(Y)): 
       Output[i][j] += X[i][k] * Y[k][j] 
    #output is a 3*4 empty matrix 

pyspark Ich bin neu zu entfachen und die Verwendung folgt.

+1

Sie suchen also jemanden für Ihre Hausaufgaben? –

Antwort

0

Ihr Code funktioniert, aber Sie sollten Output initialisieren, und nur einmal,

Output=[[0]*4]*3 

Sie sind nicht RDDs obwohl verwenden, ist Ihr Lehrer wird nicht glücklich sein.

1

Es ist nicht so schwer, Sie müssen nur Ihre Matrix mit einer anderen Notation schreiben.

X = [[10,7,3],[3 ,2,6],[5 ,8,7]] 

Kann als

X = (0,0,10),(0,1,7),(0,2,3)... 

rdd_x = sc.parallelize ((0,0,10), (0,1,7) geschrieben werden (0,2,3) ...) rdd_y = sc.parallelize ((0,0,3), (0,1,7), (0,2,11) ...)

Jetzt können Sie die Multiplikation mit Join oder Kartesisch machen . ZB

rdd_x.cartesian(rdd_y)\ 
.filter(lambda x: x [0][0] == x[1][1] and x[0][1] == x[1][0])\ 
.map(lambda x: (x[0][0],x[0][2] * x[1][2])).reduceByKey(lambda x,y: x+y).collect()