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

Spark使用s3a协议连接MinIO无法建立连接的问题求助

Spark使用s3a协议连接MinIO无法建立连接的问题求助

大家好,我最近在尝试用Spark通过s3a协议连接MinIO处理数据,但运行代码后完全没反应。把日志级别调到debug模式后,才发现根本没和MinIO建立起连接,实在搞不懂哪里出问题了。

以下是我的完整代码:

import org.apache.spark.sql.*;
import org.apache.spark.sql.types.*;
import java.util.*;
import java.io.IOException;

public class TestMinIOSpark {
    public static void main(String[] args) throws IOException {
        SparkSession spark = SparkSession.builder()
                .appName("TestMinIOSpark")
                .master("local[*]") // 实际环境可替换为集群配置
                .config("spark.hadoop.fs.s3a.endpoint", "http://127.0.0.1:9000/")
                .config("spark.hadoop.fs.s3a.access.key", "username")
                .config("spark.hadoop.fs.s3a.secret.key", "password")
                .config("spark.hadoop.fs.s3a.path.style.access", "true")
                .config("spark.hadoop.fs.s3a.impl", "org.apache.hadoop.fs.s3a.S3AFileSystem")
                .config("spark.hadoop.fs.s3a.aws.credentials.provider", "org.apache.hadoop.fs.s3a.SimpleAWSCredentialsProvider")
                .config("spark.jars.packages", "org.apache.hadoop:hadoop-aws:3.4.1,software.amazon.awssdk:bundle:2.29.6,software.amazon.awssdk:core:2.29.6")
                .config("spark.hadoop.fs.s3a.connection.ssl.enabled", "false")
                .getOrCreate();

        Properties properties = getProperties();
        StructType schema = new StructType(new StructField[]{
                new StructField("id", DataTypes.IntegerType, false, Metadata.empty()),
                new StructField("name", DataTypes.StringType, false, Metadata.empty()),
                new StructField("age", DataTypes.IntegerType, false, Metadata.empty())
        });

        // 构造测试数据
        List<Row> data = Arrays.asList(
                RowFactory.create(1, "Alice", 25),
                RowFactory.create(2, "Bob", 30),
                RowFactory.create(3, "Charlie", 35)
        );

        // 创建DataFrame并写入MinIO
        Dataset<Row> df = spark.createDataFrame(data, schema);
        df.write()
                .mode("overwrite")
                .parquet("s3a://test/test-write/");
    }

    private static Properties getProperties() {
        // 这里是获取配置的自定义方法,根据实际业务实现
        return new Properties();
    }
}

我已经配置了MinIO的端点、密钥、路径风格访问,指定了s3a的实现类和凭证提供者,也引入了官方推荐的依赖包,甚至关闭了SSL连接,但还是连不上。有没有大佬能帮忙排查一下问题点?

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.08 11:23:01