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
相关产品推荐
相关产品推荐

