【问题标题】:java.io.IOException: Invalid int encodingjava.io.IOException:无效的 int 编码
【发布时间】:2014-02-13 18:48:34
【问题描述】:

我正在编写一个 mapReduce 作业来读取和处理 Avrofile。 输入文件是 Avro 输出格式为 Avro

当我执行 Mapreduce 作业时,我在 reducer 阶段遇到以下异常。当减速器抛出 IOException 时,我无法在减速器中捕获并消除它。 Hue 中的错误堆栈跟踪看起来

java.io.IOException: Invalid int encoding
at org.apache.avro.io.DirectBinaryDecoder.readInt(DirectBinaryDecoder.java:113)
at org.apache.avro.io.ValidatingDecoder.readInt(ValidatingDecoder.java:83)
at org.apache.avro.reflect.ReflectDatumReader.readInt(ReflectDatumReader.java:166)
at org.apache.avro.generic.GenericDatumReader.read(GenericDatumReader.java:156)
at org.apache.avro.generic.GenericDatumReader.readRecord(GenericDatumReader.java:177)
at org.apache.avro.generic.GenericDatumReader.read(GenericDatumReader.java:148)
at org.apache.avro.generic.GenericDatumReader.readArray(GenericDatumReader.java:206)
at org.apache.avro.generic.GenericDatumReader.read(GenericDatumReader.java:150)
at org.apache.avro.generic.GenericDatumReader.readRecord(GenericDatumReader.java:177)
at org.apache.avro.generic.GenericDatumReader.read(GenericDatumReader.java:148)
at org.apache.avro.generic.GenericDatumReader.read(GenericDatumReader.java:139)
at org.apache.avro.hadoop.io.AvroDeserializer.deserialize(AvroDeserializer.

通过谷歌搜索,我注意到有一张 apache JIRA 票证 (https://issues.apache.org/jira/browse/AVRO-882)。没有更新。

我使用的是 AVRO-1.7.5,下面是依赖 maven

    <dependency>
        <groupId>org.apache.avro</groupId>
        <artifactId>avro</artifactId>
        <version>1.7.5</version>
    </dependency>

任何帮助将不胜感激?谢谢

【问题讨论】:

  • 问题解决了吗?
  • 我使用的是 avro 1.8.1,也有这个问题。你是怎么解决的?
  • Jira 票证仍处于打开状态,作为一种变通方法转换可能是一种选择?

标签: hadoop avro


【解决方案1】:

在我的情况下,这个问题表现出来是因为我没有使用正确的架构来阅读文档。

请记住,如果您正在阅读的 Avro 文档是使用与您正在阅读的内容不同的架构(编写器架构)编写的,您将需要使用同时采用读取器和编写器架构的构造函数来构造 SpecificDatumReader .

new SpecificDatumReader<>(writerSchema, readerSchema)

而不是

new SpecificDatumReader<>(class)

【讨论】:

    猜你喜欢
    • 2010-10-21
    • 1970-01-01
    • 2020-04-01
    • 2010-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-04
    • 1970-01-01
    相关资源
    最近更新 更多