2015-07-17 2 views
11

J'ai un objet MatrixFactorizationModel. Si j'essaie de recommander des produits à un seul utilisateur juste après la construction du modèle via ALS.train (...), cela prend 300 ms (pour mes données et mon matériel). Mais si je sauvegarde le modèle sur le disque et le charge, la recommandation prend presque 2000ms. Aussi Spark met en garde:Enregistrement/chargement correct de MatrixFactorizationModel

15/07/17 11:05:47 WARN MatrixFactorizationModel: User factor does not have a partitioner. Prediction on individual records could be slow. 
15/07/17 11:05:47 WARN MatrixFactorizationModel: User factor is not cached. Prediction could be slow. 
15/07/17 11:05:47 WARN MatrixFactorizationModel: Product factor does not have a partitioner. Prediction on individual records could be slow. 
15/07/17 11:05:47 WARN MatrixFactorizationModel: Product factor is not cached. Prediction could be slow. 

Comment puis-je créer/set partitionneur et les facteurs de l'utilisateur du cache et produit après le modèle de chargement? approche suivante n'a pas aidé:

model.userFeatures().cache(); 
model.productFeatures().cache(); 

Aussi je tentais de partitionner les RDD et créer un nouveau modèle à partir de versions repartitionnées mais aussi n'a pas aidé.

+0

Je suis incapable de reproduire les messages d'avertissement que vous avez partagé. Pourriez-vous s'il vous plaît partager du code? – Vishnu667

Répondre

2

Vous n'avez pas besoin d'utiliser de parenthèses, userFeatures est le RDD de (Int, Array [Double]) qui ne prend pas de paramètres.

Cela vous aidera à:

model.userFeatures.cache 
model.productFeatures.cache