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

EKS集群Spark对接Minio时textFile正常读parquet报403如何解决

问题排查方案

1. 优先修复配置错误

你目前的Spark配置存在多处笔误,先修正所有配置项:

  • Endpoint配置多余单引号,修正为:sparkConf.set("fs.s3a.endpoint", "http://minio-k8s-service:9000"),建议加上http前缀避免协议识别错误
  • 超时配置键名拼写错误,将s.s3a.connection.timeout修正为fs.s3a.connection.timeout
  • 统一所有s3a配置的前缀:所有s3a相关配置都加上spark.hadoop.前缀,避免driver和executor配置不一致,修正后完整配置参考:
sparkConf.set("spark.hadoop.fs.s3a.endpoint", "http://minio-k8s-service:9000");
sparkConf.set("spark.hadoop.fs.s3a.connection.ssl.enabled", "false");
sparkConf.set("spark.hadoop.fs.s3a.signing-algorithm", "S3SignerType");
sparkConf.set("spark.hadoop.fs.s3a.connection.timeout", "100000");
sparkConf.set("spark.master", "k8sSchedulerURL");
sparkConf.set("spark.deploy.mode", "cluster");
sparkConf.set("spark.hadoop.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");
// 新增强制使用静态凭证配置,避免EKS节点IAM角色优先级高于配置的AK/SK
sparkConf.set("spark.hadoop.fs.s3a.aws.credentials.provider", "org.apache.hadoop.fs.s3a.SimpleAWSCredentialsProvider");

2. 验证MinIO侧权限配置

textFile读单个文件仅需要对应文件的GET权限,而read.parquet操作会先触发对应目录的LIST权限校验,用于扫描目录下所有parquet分片、元数据文件:

  • 确认当前使用的AK/SK对s3a://mybucket/myfolder/目录拥有s3:ListBucket权限
  • 确认桶名拼写无误:你测试textFile时用的桶名是mybbucket(多一个b),读parquet用的是mybucket,检查是否为笔误

3. 修复签名算法适配问题

Hadoop 3.2.0版本的s3a客户端默认使用AWS V4签名,MinIO默认也优先支持V4签名:

  • 如果你没有特殊配置MinIO使用V2签名,可删除fs.s3a.signing-algorithm配置项,使用默认的V4签名即可
  • 如需保留V2签名,确认MinIO启动时开启了V2签名兼容参数

4. 验证依赖版本匹配

你使用的hadoop-aws:3.2.0必须对应匹配版本的aws-java-sdk-bundle依赖,两者版本不匹配会触发异常签名校验:

  • 确认提交Spark任务时携带的aws-java-sdk-bundle版本为1.11.375,和hadoop-aws版本严格对应
  • 避免依赖冲突,排除任务中其他版本的aws-java-sdk相关依赖

5. Cluster模式配置传递验证

Cluster模式下driver运行在K8s Pod中,可在代码中打印s3a相关配置确认是否生效:

System.out.println(session.sparkContext().hadoopConfiguration().get("fs.s3a.access.key"));
System.out.println(session.sparkContext().hadoopConfiguration().get("fs.s3a.aws.credentials.provider"));

也可以通过Spark UI的Environment页面确认所有配置是否正确传递到driver和executor。

内容的提问来源于stack exchange,提问作者Naresh G

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 20:06:03