pySpark Hadoop AWS s3 requester-pays.enabled 配置不起作用

问题描述 投票:0回答:1

我正在尝试使用 pyspark 读取 AWS S3 存储桶。该存储桶需要请求者付费才能读取。

但是,尽管 aws-cli 上的类似凭证有效,并且我相信

spark.hadoop.fs.s3a.requester-pays.enabled
配置是原因,但它似乎不起作用,因为如果我删除 aws-cli 上的参数
--request-payer requester
,我会得到确切的结果同样的错误。

下面是我的 pyspark 配置代码

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.endpoint", "s3.amazonaws.com") \
    .config("spark.hadoop.fs.s3a.impl", "org.apache.hadoop.fs.s3a.S3AFileSystem") \
    .config("spark.hadoop.fs.s3a.path.style.access", "true") \
    .config("spark.hadoop.fs.s3a.requester-pays.enabled", "true") \
    .config("spark.hadoop.fs.s3a.requester.pays.enabled", "true") \
    .config('spark.hadoop.fs.s3a.aws.credentials.provider', 'org.apache.hadoop.fs.s3a.SimpleAWSCredentialsProvider')\
    .getOrCreate()

我用命令运行 pyspark

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

谢谢你。

python amazon-web-services amazon-s3 hadoop pyspark
1个回答
0
投票

根据 s3a 文档,它是

fs.s3a.requester.pays.enabled

但是,该功能仅随 HADOOP-14661 S3A 一起提供,以支持 Requester Pays Buckets,这表明它是 Hadoop 3.3.5 功能。

将所有 hadoop-* 依赖项升级到 3.3.5 或更高版本才能正常工作。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.