You need to enable JavaScript to run this app. 如何在AWS EMR的PySpark会话classpath中添加JPMML依赖且不改其他配置
优惠活动
大模型
产品
解决方案
定价
更多

如何在AWS EMR的PySpark会话classpath中添加JPMML依赖且不改其他配置

解决方案

方案1:初始化SparkSession时动态追加依赖(不覆盖原有配置)

创建SparkSession时仅追加JPMML-SparkML的Maven依赖坐标,不会修改其他已有配置,也不影响sc.install_pypi_package功能的正常使用:

from pyspark.sql import SparkSession

spark = SparkSession.builder \
    .appName("PySpark2PMMLTest") \
    # 仅追加JPMML依赖,原有配置保留
    .config("spark.jars.packages", "org.jpmml:jpmml-sparkml:2.1.0") \
    .getOrCreate()
sc = spark.sparkContext

注:版本号需要和你的Spark版本匹配:

  • Spark 2.4.x 对应 jpmml-sparkml 1.5.x
  • Spark 3.0~3.2.x 对应 jpmml-sparkml 1.7.x
  • Spark 3.3+ 对应 jpmml-sparkml 2.1.x

如果你的EMR集群无法访问公网Maven仓库,可以提前下载对应版本的JPMML-SparkML JAR包上传到集群本地路径或者HDFS路径,修改配置项为本地路径即可:

.config("spark.jars", "/path/to/your/jpmml-sparkml-xxx.jar")

方案2:已启动SparkSession的情况下动态加载JAR

如果不想重启当前已运行的Spark会话,可以直接用SparkContext的addJar方法运行时动态加载JPMML的JAR包,完全不修改原有配置:

# 提前把JAR包上传到集群可访问的路径,比如HDFS或者每个节点的本地路径
sc.addJar("/path/to/your/jpmml-sparkml-xxx.jar")

# 加载完成后再导入pyspark2pmml使用即可
import pyspark2pmml

验证方法

加载完成后运行以下代码验证是否生效,不再抛出类路径找不到的错误即为配置成功:

# 替换为你自己的数据集schema和训练好的模型
pmml_builder = pyspark2pmml.PMMLBuilder(sc, df.schema, trained_model)

内容的提问来源于stack exchange,提问作者Adam Hoelscher

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.17 06:06:05