【问题标题】:ArrayIndexOutOfBoundsException while reading avro file using BinaryDecoder in java在 java 中使用 BinaryDecoder 读取 avro 文件时出现 ArrayIndexOutOfBoundsException
【发布时间】:2021-03-28 01:59:15
【问题描述】:

我使用的是 avro-1.10.1 jar,下面是示例代码。 这是为了读取存储在本地系统上的 avro 文件数据。在 reader.read 方法中抛出异常,它试图访问 in.readIndex 并失败。

DatumReader<GenericRecord> reader = new GenericDatumReader<GenericRecord>(schema);
InputStream inputStream = new FileInputStream(new File("E:\\QA_1040\\AVRO_UNI.avro"));
BinaryDecoder decoder = DecoderFactory.get().binaryDecoder(inputStream, null);
GenericRecord data = reader.read(null, decoder);



 Error:
    {"type":"record","name":"Root","fields":[{"name":"COL_STR","type":["null","string"]},{"name":"COL_INT","type":["null","long"]}]}
    Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: -40
        at org.apache.avro.io.parsing.Symbol$Alternative.getSymbol(Symbol.java:460)
        at org.apache.avro.io.ResolvingDecoder.readIndex(ResolvingDecoder.java:283)
        at org.apache.avro.generic.GenericDatumReader.readWithoutConversion(GenericDatumReader.java:187)
        at org.apache.avro.generic.GenericDatumReader.read(GenericDatumReader.java:160)
        at org.apache.avro.generic.GenericDatumReader.readField(GenericDatumReader.java:259)
        at org.apache.avro.generic.GenericDatumReader.readRecord(GenericDatumReader.java:247)
        at org.apache.avro.generic.GenericDatumReader.readWithoutConversion(GenericDatumReader.java:179)
        at org.apache.avro.generic.GenericDatumReader.read(GenericDatumReader.java:160)
        at org.apache.avro.generic.GenericDatumReader.read(GenericDatumReader.java:153)
        at gcloud.AvroReadFromLocalFileBinaryDecoder.main(AvroReadFromLocalFileBinaryDecoder.java:55)

【问题讨论】:

    标签: binary avro


    【解决方案1】:

    我认为 Avro 文件是二进制编码的,因此您需要先对其进行解码,然后再读取文件。

    要在 Linux 环境中解码文件,我们有类似的命令

    base64 --decode fileName > newDecodedFileName
    base64 --decode Customer.avro > customer_decode.avro
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-04-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多