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

网络受限环境下如何手动为PySpark添加hadoop-aws模块?

网络受限环境下为PySpark 3.4.1添加hadoop-aws Jar包的解决方案

1. 匹配正确的Jar包版本

PySpark 3.4.1默认绑定Hadoop 3.3.4,因此需要下载以下两个Jar包:

  • org.apache.hadoop:hadoop-aws:3.3.4
  • aws-java-sdk-bundle:1.12.523(hadoop-aws的依赖包,版本需与Hadoop 3.3.4兼容)

2. 直接指定Jar包路径启动PySpark

将下载好的Jar包放入任意本地目录(比如你之前用的./venv/lib/python3.x/site-packages/pyspark/jars),启动时通过--jars参数明确指定Jar包绝对路径,绕过Spark默认的缓存目录查找逻辑:

pyspark --jars /your/venv/path/lib/python3.x/site-packages/pyspark/jars/hadoop-aws-3.3.4.jar,/your/venv/path/lib/python3.x/site-packages/pyspark/jars/aws-java-sdk-bundle-1.12.523.jar

3. 通过环境变量或代码配置加载Jar包

  • 环境变量方式:设置SPARK_CLASSPATH后启动PySpark:
    export SPARK_CLASSPATH="/your/jar/path/hadoop-aws-3.3.4.jar:/your/jar/path/aws-java-sdk-bundle-1.12.523.jar"
    pyspark
    
  • 代码配置方式:初始化SparkSession时指定spark.jars参数:
    from pyspark.sql import SparkSession
    
    spark = SparkSession.builder \
        .appName("AWSIntegration") \
        .config("spark.jars", "/your/jar/path/hadoop-aws-3.3.4.jar,/your/jar/path/aws-java-sdk-bundle-1.12.523.jar") \
        .getOrCreate()
    

4. 禁用远程仓库下载(可选)

若Spark仍尝试访问中央仓库,可通过空的Ivy配置文件阻止远程请求:

  1. 创建空文件empty-ivy-settings.xml
  2. 启动时指定配置:
    pyspark --conf spark.jars.ivySettings=/path/to/empty-ivy-settings.xml --jars /your/jar/path/hadoop-aws-3.3.4.jar,/your/jar/path/aws-java-sdk-bundle-1.12.523.jar
    

关键注意事项

  • 必须同时添加hadoop-aws和aws-java-sdk-bundle,仅单个Jar会导致类找不到的错误。
  • 严格匹配版本,PySpark 3.4.1对应Hadoop 3.3.4,版本不兼容会引发运行时异常。

内容的提问来源于stack exchange,提问作者Sherwin R

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 01:12:56