我无法保存 ALS 模型


from pyspark.ml.recommendation import ALS, ALSModel
from pyspark.ml.tuning import ParamGridBuilder, CrossValidator
from pyspark.mllib.evaluation import RegressionMetrics, RankingMetrics
from pyspark.ml.evaluation import RegressionEvaluator
als = ALS(maxIter=15, 
regParam=0.08, 
userCol="ID User", 
itemCol="ID Film", 
ratingCol="Rating",
rank=20,
numItemBlocks=30,
numUserBlocks = 30,
alpha = 0.95,
nonnegative = True, 
coldStartStrategy="drop",
implicitPrefs=False)
model = als.fit(training_dataset)
model.save('model')

每次我调用save方法时jupyter notebook都会给出类似的错误

An error occurred while calling o477.save.
: org.apache.spark.SparkException: Job aborted.
at org.apache.spark.internal.io.SparkHadoopWriter$.write(SparkHadoopWriter.scala:106)

我知道之前的SO问题和答案,并尝试过这个:

model.save('model')

.

model.write().save("saved_model")

.

als.write().save("saved_model")

.

als.save('model')

.

import pickle
s = pickle.dumps(als)

.

als_path = "from_C:Folder_to_my_project_root" + "/als"
als.save(als_path)

我的问题是如何保存ALS模型,以便我可以加载它没有训练每次我运行程序

我曾经运行过这个问题,我在netflix奖励数据集运行推荐,总共有1亿条记录。这就是我所做的,试着运行50%的数据,慢慢地增加百分比,看看哪里出错了。在我的例子中,这些数据慢慢地增加到100%。关闭不必要的Chrome选项卡也有帮助

基本上,o477和oXXX错误一般意味着有错误,而做的工作。既然您正在做电影推荐,我假设您使用movielens或Netflix数据集。它可以是以下其中一种:

  1. 文件太大,无法pickle
  2. 模型太复杂,内存不足

相关内容

  • 没有找到相关文章

最新更新