Spark加载本地PipelineModel时提示输入路径不存在异常如何解决
问题原因
- Spark PipelineModel 保存后会生成独立的目录结构,自带
metadata、data等子目录,报错提示找不到对应metadata路径,说明你当前传入的加载路径不是模型保存的根目录:你实际是把模型保存到了C:/Users/meh/Desktop/PARC_ACTIF_OM/Partie1_OM/Models_save/model_final.sav路径下,不是你代码里写的Models_save目录。 - Windows 环境下 Spark 依赖 Hadoop 解析文件路径,路径格式不符合规则也会触发路径不存在报错。
解决方案
- 先确认本地
model_final.sav文件夹下直接存在metadata、data两个子目录,确认这是模型保存的根目录 - 替换加载代码的路径为模型实际保存的根目录,Windows 环境推荐以下两种写法:
import org.apache.spark.ml.PipelineModel // 写法一:直接传入完整的模型根目录路径 val pipeline = PipelineModel.load("C:/Users/meh/Desktop/PARC_ACTIF_OM/Partie1_OM/Models_save/model_final.sav") // 写法二:增加本地文件协议前缀,避免路径解析异常 val pipeline = PipelineModel.load("file:///C:/Users/meh/Desktop/PARC_ACTIF_OM/Partie1_OM/Models_save/model_final.sav")
- 如果你是在Spark集群模式下运行,需要将模型目录上传到所有Worker节点的相同路径,或者上传到HDFS后使用HDFS路径加载,避免节点间文件不同步导致的路径不存在问题。
注意事项
- 不要手动修改Spark生成的模型目录内的文件结构、文件名,否则会直接导致加载失败
- 模型保存和加载所用的Spark大版本需要保持一致,跨版本可能存在兼容性问题导致加载报错
内容的提问来源于stack exchange,提问作者meher ben ahmed
相关产品推荐
相关产品推荐

