首页 > 解决方案 > Minio,在 EKS 集群上与 spark 一起使用时出现访问被拒绝错误

问题描述

我正在使用 MINIO,并且我已经在亚马逊 EKS kubernetes 集群上启动了一个带有 helm 的 MINIO 网关。我添加了以下火花侧所需的属性

sparkConf.set("fs.s3a.endpoint", "minio-k8s-service':9000");
sparkConf.set("fs.s3a.connection.ssl.enabled", "false");
sparkConf.set("fs.s3a.signing-algorithm", "S3SignerType");
sparkConf.set("s.s3a.connection.timeout", "100000");
sparkConf.set("spark.master", "k8sSchedulerURL");
sparkConf.set("spark.deploy.mode", "cluster");
sparkConf.set("fs.s3a.committer.staging.conflict-mode", "replace");sparkConf.set("spark.hadoop.fs.s3a.access.key","myaccesskey")sparkConf.set("spark.hadoop.fs.s3a.secret.key","mysecretkey")

下面的代码行工作正常。当我尝试从 S3 读取文件时

JavaSparkContext(session.sparkContext()).textFile("s3a://mybbucket/myfolder/sample.parquet", 1)

但是,如果我尝试加载如下所示的文件,则会因访问被拒绝错误而失败

sc.read().parquet("s3a://mybucket/myfolder/myfile.parquet")

它在 s3a://mybucket/myfolder/testfile.parquet 上出现错误 getFileStatus 失败:com.amazonaws.services.s3.model.AmazonS3Exception: Forbidden (Service: Amazon S3; Status Code: 403; Error Code: 403 Forbidden; Request ID : XYZ123XYZ; S3 Extended Request ID: null), S3 Extended Request ID: null:403 Forbidden

我正在使用带有 spark3.1.1 的 hadoop-aws-3.2.0 jar。我使用 AWS 的 accesskey 和 secretkey 是正确的,并尝试了所有可能的选项。即使通过正确的凭据显示此错误,此错误看起来也很奇怪。

任何帮助表示赞赏。

标签: apache-sparkkubernetespysparkamazon-eksminio

解决方案


您可能必须设置fs.s3a.path.style.accesstrue. 如果它不适合您,MinIO 团队可以在他们的公共 slack 频道或通过电子邮件 24/7/365 回答问题。


推荐阅读