首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用管道从Pyspark.ml加载S3模型

用管道从Pyspark.ml加载S3模型
EN

Stack Overflow用户
提问于 2021-02-08 10:57:18
回答 1查看 1.7K关注 0票数 1

我正在尝试将一个经过训练的模型保存到S3存储中,然后尝试通过来自pyspark.ml的管道包加载和预测这个模型。下面是我如何拯救我的模型的一个例子。

代码语言:javascript
运行
复制
#stage_1 to stage_4 are some basic trasnformation on data one-hot encoding e.t.c
# define stage 5: logistic regression model                          
 stage_5 = LogisticRegression(featuresCol='features',labelCol='label')

 # SETUP THE PIPELINE
 regression_pipeline = Pipeline(stages= [stage_1, stage_2, stage_3, stage_4, stage_5])

 # fit the pipeline for the trainind data
 model = regression_pipeline.fit(dataFrame1)

 model_path ="s3://s3-dummy_path-orch/dummy models/pipeline_testing_1.model"
 model.save(model_path)

我能够成功地保存模型&在上面提到的模型路径中创建了两个文件夹

  1. stages
  2. metadata.

然而,当我试图加载模型时,它给了我以下错误。

代码语言:javascript
运行
复制
Traceback (most recent call last):
  File "/tmp/pythonScript_85ff2462_e087_4805_9f50_0c75fc4302e2958379757178872310.py", line 75, in <module>
    pipelineModel = Pipeline.load(model_path)
  File "/usr/lib/spark/python/lib/pyspark.zip/pyspark/ml/util.py", line 362, in load
  File "/usr/lib/spark/python/lib/pyspark.zip/pyspark/ml/pipeline.py", line 207, in load
  File "/usr/lib/spark/python/lib/pyspark.zip/pyspark/ml/util.py", line 300, in load
  File "/usr/lib/spark/python/lib/py4j-0.10.7-src.zip/py4j/java_gateway.py", line 1257, in __call__
  File "/usr/lib/spark/python/lib/pyspark.zip/pyspark/sql/utils.py", line 79, in deco
pyspark.sql.utils.IllegalArgumentException: 'requirement failed: Error loading metadata: Expected class name org.apache.spark.ml.Pipeline but found class name org.apache.spark.ml.PipelineModel'

我试图按以下方式加载该模型:

代码语言:javascript
运行
复制
from pyspark.ml import Pipeline

## same path used while #model.save in the above code snippet
model_path ="s3://s3-dummy_path-orch/dummy models/pipeline_testing_1.model" 

pipelineModel = Pipeline.load(model_path)

我怎么才能纠正这个问题呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-08 11:48:57

如果保存了管道模型,则应该将其作为管道模型加载,而不是作为管道加载。不同之处在于,管道模型适合于数据模型,而管道模型则不是。

代码语言:javascript
运行
复制
from pyspark.ml import PipelineModel

pipelineModel = PipelineModel.load(model_path)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66100271

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档