Azure DevOps中更新PySpark依赖Maven类库修复Jackson漏洞
解决PySpark依赖Jackson类库漏洞的方案(Azure DevOps环境)
核心思路说明
PySpark作为Python包,其内嵌的Jackson等Java类库依赖是随PySpark版本打包的,直接修改requirements.txt无法单独更新这些Java类库,需通过以下几种方式处理:
1. 优先升级PySpark到官方修复版本
这是最稳妥的方案,PySpark官方在新版本中通常会同步更新内嵌的第三方Java依赖以修复漏洞:
- 查看PySpark官方发布说明,确认包含Jackson漏洞修复的版本(比如3.5.4或3.6.0,具体以官方信息为准)
- 修改项目根目录的
requirements.txt,将pyspark==3.5.3替换为修复后的版本,例如:pyspark==3.5.4 - 在Azure DevOps的CI/CD任务中,重新执行
pip install -r requirements.txt完成依赖更新
2. 不升级PySpark,手动指定Jackson修复版本
如果无法升级PySpark主版本,可通过Spark的配置参数覆盖内嵌的Jar包依赖:
- 在Spark应用启动时,通过
spark.jars.packages参数指定JFrog给出的Jackson修复版本(需包含所有关联的Jackson组件),例如:spark-submit --conf spark.jars.packages=com.fasterxml.jackson.core:jackson-databind:2.15.3,com.fasterxml.jackson.core:jackson-core:2.15.3,com.fasterxml.jackson.core:jackson-annotations:2.15.3 your_spark_app.py - 也可以在Python代码中直接配置SparkSession:
from pyspark.sql import SparkSession spark = SparkSession.builder \ .appName("YourApplication") \ .config("spark.jars.packages", "com.fasterxml.jackson.core:jackson-databind:2.15.3,com.fasterxml.jackson.core:jackson-core:2.15.3,com.fasterxml.jackson.core:jackson-annotations:2.15.3") \ .getOrCreate() - 若使用Azure DevOps的私有Maven/JFrog仓库,需额外配置仓库地址:
spark-submit --conf spark.jars.repositories=https://your-jfrog-repo-url/artifactory/maven --conf spark.jars.packages=... your_spark_app.py
3. 自定义打包PySpark(极端场景)
如果上述方法都无法满足需求,可自定义修改PySpark内嵌的Jar包后重新打包:
- 下载PySpark 3.5.3的源码包
- 替换源码中
spark/jars目录下的Jackson相关Jar包为JFrog提供的修复版本 - 执行
python setup.py bdist_wheel生成自定义wheel包 - 将该包上传至Azure DevOps Artifacts的私有PyPI源
- 修改
requirements.txt引用这个自定义版本,例如:pyspark==3.5.3-jackson-fixed
内容的提问来源于stack exchange,提问作者vai_007
相关产品推荐
相关产品推荐

