序列化 Apache Avro 通用记录使用模式到文件

问题描述 投票:0回答:0

我有一个代码,我试图将通用记录列表序列化为字节数组并最终将其写入文件,但得到一个 UnresolvedUnionException

下面列出的是源代码

public static byte[] encode(List<GenericRecord> records) throws IOException {
    Schema schema =
        new Schema.Parser()
            .parse(new File("schema.avsc"));
    SpecificDatumWriter<GenericRecord> datumWriter = new SpecificDatumWriter<>(schema);
    ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
    byteArrayOutputStream.reset();
    BinaryEncoder binaryEncoder = new EncoderFactory().binaryEncoder(byteArrayOutputStream, null);
    for (GenericRecord segment : records) {
      datumWriter.write(segment, binaryEncoder);
    }
    binaryEncoder.flush();
    byte[] bytes = byteArrayOutputStream.toByteArray();
    Files.write(Path.of("file.avro"), bytes);
    return bytes;
  }

错误发生在字段类型是记录类型的地方,代码能够成功解析原始类型字符串,整数,但在类型记录上失败

avro
© www.soinside.com 2019 - 2024. All rights reserved.