You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Spark中加载.sav格式机器学习模型并解决加载报错问题

问题分析与解决方案

一、优先解决类找不到的报错

你遇到的java.lang.ClassNotFoundException: org.apache.spark.ml.Pipeline$属于运行时依赖缺失问题,按以下步骤排查修复:

  • 确认项目已引入对应版本的Spark MLlib依赖:
    如果是sbt项目,在build.sbt中添加:
    libraryDependencies += "org.apache.spark" %% "spark-mllib" % "你的Spark集群对应版本" % Provided
    
    如果是Maven项目,在pom.xml中添加:
    <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-mllib_2.12</artifactId>
        <version>你的Spark集群对应版本</version>
        <scope>provided</scope>
    </dependency>
    
  • 确认项目依赖的Spark版本和运行环境的Spark版本完全一致,版本不匹配会直接导致类加载失败。
  • 如果是在IDEA本地运行代码,需要在运行配置中勾选Include dependencies with "Provided" scope,否则Provided级别的依赖不会被加载到运行时环境。

二、解决.sav格式模型加载问题

Spark ML原生的Pipeline和PipelineModel仅支持读取Spark本身导出的、以目录形式存储的模型文件,*.sav格式通常是scikit-learn、SPSS等其他工具导出的文件,默认无法直接读取,分两种场景处理:

场景1:该.sav是Spark ML导出的模型

如果这个模型是你之前用PipelineModel.save()方法导出的,只是人为将导出的根目录命名为了model_final.sav,那么你原来的加载代码是正确的,修复完第一步的依赖问题后即可正常加载,注意路径指向根目录即可,不要指定目录内的单个文件。

场景2:该.sav是第三方工具导出的文件

  • 如果是scikit-learn导出的sav模型:可以先将模型转换为ONNX格式,再用ONNX Runtime for Spark加载运行;也可以先将模型导出为PMML格式,再用jpmml-sparkml等适配库在Spark中加载。
  • 如果是SPSS导出的sav统计数据文件:你需要使用spark-sav-reader等专属数据读取依赖加载数据,不要调用PipelineModel.load方法加载。

三、加载验证

加载成功后可以执行以下代码确认模型结构正常:

loaded_model.stages.foreach(println)

内容的提问来源于stack exchange,提问作者meher ben ahmed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 23:54:04