【问题标题】:Creating an Avro file in Amazon S3 bucket在 Amazon S3 存储桶中创建 Avro 文件
【发布时间】:2017-11-13 12:46:18
【问题描述】:

如何在 s3 存储桶中创建一个 Avro 文件,然后将 avro 记录附加到它。

我拥有字节数组形式的所有 avro 记录,并已成功传输到 avro 文件中。但他的文件(据我所知)不是完整的 avro 文件。由于完整的 avro 文件是架构 + 数据。

以下是在 S3 中传输文件中字节记录的代码。

任何人都知道如何创建基于 avro 模式的文件,然后将这些字节传输到同一个文件。

public void sendByteData(byte [] b, Schema schema){
        try{
            AWSCredentials credentials = new BasicAWSCredentials("XXXXX", "XXXXXX");

            AmazonS3 s3Client = new AmazonS3Client(credentials);

            //createFolder("encounterdatasample", "avrofiles", s3Client);


            ObjectMetadata meta = new ObjectMetadata();
             meta.setContentLength(b.length);
            InputStream stream = new ByteArrayInputStream(b);

        /*  File file = new File("/home/abhishek/sample.avro");
            DatumWriter<GenericRecord> writer = new GenericDatumWriter<GenericRecord>(schema);
            DataFileWriter<GenericRecord> dataFileWriter = new DataFileWriter<GenericRecord>(writer);
            dataFileWriter.create(schema, file); 
            s3Client.putObject("encounterdatasample", dataFileWriter.create(schema, file), stream, meta); 
         */

            s3Client.putObject("encounterdatasample", "sample.avro", stream,meta);
            System.out.println("Done writing the data");
        }catch(Exception e){
            e.printStackTrace();
        }

    }

cmets 中的代码不起作用。只是想玩弄它。 对此有任何帮助。

谢谢。

【问题讨论】:

    标签: java file amazon-web-services amazon-s3 avro


    【解决方案1】:

    我相信你的断言是正确的,你不能在字节数组中同时编码数据和模式。您需要使用一些容器(通常是文件)对两者进行编码。

    通过一些修复,您注释掉的代码应该可以工作。我刚刚在用 Java 编写的 Lambda 中做了类似的事情。我使用 DataFileWriter 将文件写入本地磁盘 (/tmp),然后使用您的语法将该文件放入 S3 没有问题。

    两个建议:

    • 完成写入文件后,请致电 dataFileWriter.close()
    • s3Client.putObject 调用中直接使用file 对象,例如s3Client.putObject(bucket,key,file)

    【讨论】:

      猜你喜欢
      • 2019-07-14
      • 1970-01-01
      • 2011-01-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-12
      • 1970-01-01
      • 2021-12-02
      相关资源
      最近更新 更多