Правильное сохранение/загрузка MatrixFactorizationModel

У меня есть объект MatrixFactorizationModel. Если я попытаюсь рекомендовать продукты для одного пользователя сразу после построения модели через ALS.train(...), то это займет 300 мс (для моих данных и оборудования). Но если я сохраню модель на диск и загружу ее, тогда рекомендация займет почти 2000 мс. Также Spark предупреждает:

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.

Как я могу создать/установить коэффициенты пользователя и продукта с разделителями и кешем после загрузки модели? Следующий подход не помог:

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

Также я пытался переделать эти rdds и создать новую модель из переразмерных версий, но это также не помогло.

Ответ 1

Вам не нужно использовать скобки, userFeatures - это RDD (Int, Array [Double]), который не принимает параметры.

Это поможет вам:

model.userFeatures.cache
model.productFeatures.cache