apache-spark - 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 是正确的,并尝试了所有可能的选项。即使通过正确的凭据显示此错误,此错误看起来也很奇怪。
任何帮助表示赞赏。
解决方案
您可能必须设置fs.s3a.path.style.access
为true
. 如果它不适合您,MinIO 团队可以在他们的公共 slack 频道或通过电子邮件 24/7/365 回答问题。
推荐阅读
- python - django.template.exceptions.TemplateSyntaxError:无法解析某些字符:|{{b.count}}||rangef
- amazon-web-services - 将基本域 url(例如没有 www 的 site.com)配置到 api 网关,并使其在浏览器中工作
- python-3.x - tensorflow-probability: AttributeError: Tensor.op 在启用急切执行时毫无意义
- groovy - 执行脚本时出现异常:[{}]java.lang.NullPointerException:无法在空对象上获取属性“httpResponse”
- scala - 我将如何根据一列或另一列是否匹配案例在 Scala 中执行联接?
- html - 列表中的链接标题呈现在导航栏中的链接下方
- java - 2048 Java 游戏:移动功能
- spring-boot - spring boot gradle任务“bootBuildImage”构建的cloudfoundry buildpack docker镜像中的语言环境和编码设置如何
- python - 属性错误:“sage.rings.polynomial.skew_polynomial_element.SkewPolynomial_generic_de\ nse”对象没有属性“因子”
- javascript - 如何从异步函数返回值?