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

PySpark配置requester-pays.enabled无法访问AWS S3请求付费存储桶

PySpark配置requester-pays.enabled无法访问AWS S3请求付费存储桶

看起来你遇到了PySpark访问请求付费S3桶的典型问题,结合你提到AWS CLI加--request-payer requester就能正常访问、去掉就和PySpark报一样的错,大概率是配置参数出了问题,我来帮你梳理下解决方向:

1. 修正核心配置参数名

你目前的配置里同时写了spark.hadoop.fs.s3a.requester-pays.enabled和spark.hadoop.fs.s3a.requester.pays.enabled,这里要注意:Hadoop S3A的正确参数名是用点分隔的fs.s3a.requester.pays.enabled,带横杠的那个参数是无效的——这就是你的配置没生效的关键原因。

建议你删除所有带横杠的参数配置,只保留正确的点分隔版本。

2. 统一配置位置,避免冲突

你既在SparkSession代码里配置了参数,又在spark-submit命令里通过--conf指定了一遍。虽然spark-submit的配置优先级更高,但重复配置容易混淆。建议只在一个地方配置核心参数,比如代码里或者提交命令里,保持一致性。

3. 清理重复的依赖包

你的代码里通过spark.jars.packages指定了hadoop-aws和aws-java-sdk-bundle,同时在spark-submit的--packages里又重复指定了一次,这可能导致依赖冲突。建议只保留其中一处的依赖声明,比如去掉代码里的,只在提交命令里指定,或者反过来。

修改后的示例配置

代码中的SparkSession配置:

spark = SparkSession.builder  \
    .appName("MainnetBlocksStreamingJob") \
    .config("spark.jars.packages", "org.apache.hadoop:hadoop-aws:3.2.0,com.amazonaws:aws-java-sdk-bundle:1.11.375") \
    .config("spark.hadoop.fs.s3a.access.key", S3_ACCESS_KEY) \
    .config("spark.hadoop.fs.s3a.secret.key", S3_SECRET_KEY) \
    .config("spark.hadoop.fs.s3a.impl", "org.apache.hadoop.fs.s3a.S3AFileSystem") \
    .config("spark.hadoop.fs.s3a.requester.pays.enabled", "true") \
    .config('spark.hadoop.fs.s3a.aws.credentials.provider', 'org.apache.hadoop.fs.s3a.SimpleAWSCredentialsProvider')\
    .getOrCreate()

对应的spark-submit命令:

spark-submit \
--packages io.delta:delta-spark_2.12:3.3.0,org.apache.hadoop:hadoop-aws:3.2.0,com.amazonaws:aws-java-sdk-bundle:1.11.375 \
--conf "spark.driver.extraJavaOptions=-Dlog4j.configuration=file:log4j.properties" \
--conf spark.hadoop.fs.s3a.requester.pays.enabled=true \
dataproc_jobs/streaming.py

额外排查建议

如果修改后还是不行,可以开启S3A的调试日志,查看请求细节:在log4j.properties里添加以下配置,这样能看到PySpark和S3交互的具体日志,帮你定位是否请求真的带上了请求者付费的标识:

log4j.logger.org.apache.hadoop.fs.s3a=DEBUG

备注:内容来源于stack exchange,提问作者Edward Chew

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.14 13:25:28