【问题标题】:How to read a file from minIO in apache beam java sdk如何在 apache beam java sdk 中从 minIO 读取文件
【发布时间】:2020-04-29 11:52:39
【问题描述】:

我刚开始使用 minio 和 apache beam。我在 play.min.io 上创建了一个存储桶并添加了一些文件(假设存储的文件是 one.txt 和 two.txt)。我想使用 Apache beam java sdk 访问存储在该存储桶上的文件。当我处理本地文件时,我只是传递文件的路径,如 C://new//.. 但我不知道如何从 minio 获取文件。谁能帮我写代码。

【问题讨论】:

    标签: java io apache-beam minio


    【解决方案1】:

    我设法让它与标准 AWS 配置之上的一些配置一起工作:

    1. AwsServiceEndpoint 应指向您的 minio 服务器(此处为 localhost:9000)。
        PipelineOptions options = PipelineOptionsFactory.fromArgs(args).create();
        ...
        options.as(AwsOptions.class).setAwsServiceEndpoint("http://localhost:9000");
    
    1. PathStyleAccess 必须启用(以便桶访问不会转换为对“http://bucket.localhost:9000”的请求,而是对“http://localhost:9000/bucket”的请求)。

    这可以通过使用这种 MinioS3ClientBuilderFactory 扩展 DefaultS3ClientBuilderFactory 来完成:

    public class MinioS3ClientBuilderFactory extends DefaultS3ClientBuilderFactory {
      @Override
      public AmazonS3ClientBuilder createBuilder(S3Options s3Options) {
        AmazonS3ClientBuilder builder = super.createBuilder(s3Options);
        builder.withPathStyleAccessEnabled(true);
        return builder;
      }
    }
    

    并将其注入这样的选项中:

        Class<? extends S3ClientBuilderFactory> builderFactory = MinioS3ClientBuilderFactory.class;
    
        options.as(S3Options.class).setS3ClientFactoryClass(builderFactory);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-07-18
      • 2020-01-13
      • 2019-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-11
      • 1970-01-01
      相关资源
      最近更新 更多