Le suivant code Spark:Impossible de modifier le niveau de stockage de RDD
val model = ALS.trainImplicit(ratings = ratingsRDD,
rank = rank,
iterations = numIterations,
lambda = lambda,
alpha = alpha)
model.productFeatures.cache()
val modelSubsetRDD = new MatrixFactorizationModel(
rank = rank,
userFeatures = model.productFeatures,
productFeatures = model.productFeatures)
soulève l'exception ci-dessous:
Impossible de changer le niveau de stockage d'un RDD après avoir été déjà attribué un niveau
La même exception est soulevée avec StorageLevel.MEMORY_ONLY
.
D'autre part, le code suivant fonctionne correctement:
val model = ALS.trainImplicit(ratings = ratingsRDD,
rank = rank,
iterations = numIterations,
lambda = lambda,
alpha = alpha)
val modelSubsetRDD = new MatrixFactorizationModel(
rank = rank,
userFeatures = model.userFeatures,
productFeatures = model.productFeatures)
model.userFeatures.persist(StorageLevel.MEMORY_ONLY)
model.productFeatures.persist(StorageLevel.MEMORY_ONLY)
Remarqué que cette fois userFeatures
et productFeatures
sont mis à deux membres différents du modèle. Cependant, je ne sais pas pourquoi cela fonctionne.
Si vous rencontrez toujours des problèmes, veuillez mettre à jour votre question. Si la réponse ci-dessous résout votre problème, veuillez le marquer comme accepté. – micker