gpt4 book ai didi

apache-spark - 使用 Spark 读取 S3 文件时提供 AWS_PROFILE

转载 作者:行者123 更新时间:2023-12-03 08:23:02 26 4
gpt4 key购买 nike

我希望我的 Spark 应用程序 (Scala) 能够读取 S3 文件

spark.read.parquet("s3://my-bucket-name/my-object-key")

在我的开发机器上,我可以使用 awscli 访问 S3 文件,这是 ~/.aws/config~/.aws/credentials 中预先配置的配置文件,例如:

aws --profile my-profile s3 ls s3://my-bucket-name/my-object-key

但是当尝试从 Spark 读取这些文件时,并使用作为环境变量 (AWS_PROFILE) 提供的 aws_profile,我收到以下错误:

doesBucketExist on my-bucket-name: com.amazonaws.AmazonClientException: No AWS Credentials provided by BasicAWSCredentialsProvider EnvironmentVariableCredentialsProvider SharedInstanceProfileCredentialsProvider : com.amazonaws.SdkClientException: Unable to load credentials from service endpoint

还尝试将配置文件作为 JVM 选项提供 (-Daws.profile=my-profile),但没有成功。

感谢您的阅读。

最佳答案

解决方案是提供 Spark 属性:fs.s3a.aws.credentials.provider,并将其设置为 com.amazonaws.auth.profile.ProfileCredentialsProvider。如果我可以更改代码来构建 Spark session ,那么类似于:

SparkSession
.builder()
.config("fs.s3a.aws.credentials.provider","com.amazonaws.auth.profile.ProfileCredentialsProvider")
.getOrCreate()

另一种方法是提供 JVM 选项-Dspark.hadoop.fs.s3a.aws.credentials.provider=com.amazonaws.auth.profile.ProfileCredentialsProvider
*注意前缀spark.hadoop

关于apache-spark - 使用 Spark 读取 S3 文件时提供 AWS_PROFILE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67267448/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com