So sieht die user-item-rating list wie ein Pandas Datenframe aus.Benutzer-Item-Bewertungsliste in user-item-matrix mit pyspark umwandeln
item_id rating user_id
0 aaaaaaa 5 X
1 bbbbbbb 2 Y
2 ccccccc 5 Z
3 ddddddd 1 T
Dies, wie ich erstelle Benutzer-item-Matrix in Pandas und es dauert nur ein paar Sekunden, mit realer Datenmenge (ca. 500k Reihe):
user_item_matrix = df.pivot(index = 'user_id', columns ='item_id', values = 'rating')
item_id aaaaaaa bbbbbbb ccccccc ddddddd
user_id
T NaN NaN NaN 1.0
X 5.0 NaN NaN NaN
Y NaN 2.0 NaN NaN
Z NaN NaN 5.0 NaN
ich diesen Ansatz versuche gleiche zu erreichen Ergebnis mit Pyspark-Datenrahmen.
from pyspark.sql.functions import first
df.groupby('user_id') \
.pivot('item_id') \
.agg(first('rating'))
Aber es dauert Ewigkeiten mit echten Daten zu vervollständigen. Gibt es einen klüger/schnelleren Weg, dies zu erreichen? Grundsätzlich versuche ich eine User-Item-Matrix aus einer User-Item-Rating-Liste aufzubauen.
Ich hätte erwartet, dass das funktioniert :( – muon