Cercando di costruire sistema di raccomandazione utilizzando ALS di Spark MLLib.Apache Spark ALS raccomandazioni approccio
Attualmente, stiamo provando a pre-creare consigli per tutti gli utenti su base giornaliera. Stiamo usando semplici feedback impliciti e ALS.
Il problema è che abbiamo 20 milioni di utenti e 30 milioni di prodotti e, per chiamare il metodo predizione principale(), è necessario disporre dell'unione cartesiana per utenti e prodotti, che è troppo grande e potrebbero essere necessari giorni per generare solo il join. C'è un modo per evitare il join cartesiano per rendere il processo più veloce?
Attualmente abbiamo 8 nodi con 64 GB di RAM, penso che dovrebbe essere sufficiente per i dati.
val users: RDD[Int] = ??? // RDD with 20M userIds
val products: RDD[Int] = ??? // RDD with 30M productIds
val ratings : RDD[Rating] = ??? // RDD with all user->product feedbacks
val model = new ALS().setRank(10).setIterations(10)
.setLambda(0.0001).setImplicitPrefs(true)
.setAlpha(40).run(ratings)
val usersProducts = users.cartesian(products)
val recommendations = model.predict(usersProducts)
Mostraci il tuo codice in modo che possiamo aiutare –
Grazie, ho aggiornato il mio post iniziale. –