当前位置: 首页 > 知识库问答 >
问题:

这条avro信息有效吗?

洪鹏海
2023-03-14

我有一些来自Kafka提供商的Avro消息示例,看起来是这样开始的:

00000000  4f 62 6a 01 04 16 61 76  72 6f 2e 73 63 68 65 6d  |Obj...avro.schem|
00000010  61 ef bf bd 24 7b 22 74  79 70 65 22 3a 22 72 65  |a...${"type":"re|

ef bf bd 24我希望是模式的长度,即2332字节。我很难确定Z字形变量(为什么长度永远不会是负的,会是Z字形?)是正确的值。我认为它在200K范围内。

我相信这就是为什么我在使用avro tools jar时遇到困难,无论是使用getmeta、getschema还是转换为json。

这是Avro Tools 1.8.2版本或Mac OS平台java 1.8.0_102-b14版本的已知问题吗?

这看起来像是错误编码的吗?因为所有使用这些工具的调用都会给我:

$ java -jar ~/Downloads/avro-tools-1.8.2.jar tojson dt20170607hr08_1496793109907_11_8229967.bin.1
log4j:WARN No appenders could be found for logger (org.apache.hadoop.metrics2.lib.MutableMetricsFactory).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
Exception in thread "main" java.lang.IllegalArgumentException
    at java.nio.ByteBuffer.allocate(ByteBuffer.java:334)
    at org.apache.avro.io.BinaryDecoder.readBytes(BinaryDecoder.java:288)
    at org.apache.avro.file.DataFileStream.initialize(DataFileStream.java:112)
    at org.apache.avro.file.DataFileStream.<init>(DataFileStream.java:84)
    at org.apache.avro.tool.DataFileReadTool.run(DataFileReadTool.java:71)
    at org.apache.avro.tool.Main.run(Main.java:87)
    at org.apache.avro.tool.Main.main(Main.java:76)

共有1个答案

司徒高寒
2023-03-14

看起来您在Avro文件中只有一条记录。生成Avro文件的系统正在运行旧版本。我在运行1.7.7的Nifi中也遇到了类似的问题。通过将两条记录合并到Avro文件中,我们能够解决这个问题。

Avro 1.8.2修复了该漏洞。

1.7.7和1.8.0/1.8.1都有单一记录问题。

https://issues.apache.org/jira/browse/AVRO-1888

 类似资料:
  • 我正在使用带有Avro和汇流模式注册表的Spring云流。我正在为所有服务使用一个单独的DLQ主题,因此具有不同模式的消息可能会落在这个主题中。我已禁用动态架构注册,以确保不传递错误消息()。 然而,问题是由于dlq上缺少模式,我可能会在进入这个主题时丢失一条消息。因此,我希望能够以JSON格式向dlq生成消息,并在管道的其余部分使用Avro。如果有人能帮助我如何做到这一点,或者能为我指出这件事的

  • 滚动条信息 iScroll存储了很多有用的信息,您可以使用它们来增强您的应用。 你可能会发现有用的: myScroll.x/y,当前位置 myScroll.directionX/Y,最后的方向 (-1 down/right, 0 still, 1 up/left) myScroll.currentPage,当前对齐捕获点 下面是关于处理时间的代码示例: myScroll = new IScroll

  • 因此,我们计划使用Avro在融合的Kafka生态系统上进行交流。我目前对Avro的理解是,每条消息都有自己的模式。如果是这样的话,我们需要模式注册表来解决版本更新吗? 我问,因为在每条消息中携带模式可以防止需要像模式注册表这样的东西来将消息ID映射到模式。还是我在这里错过了什么?

  • 如果该行没有详细信息怎么办?我使用WPF来显示带有行详细信息模板的数据。如果用户没有地址详细信息,我不需要行详细信息。我只需要那些有地址详细信息的用户的行详细信息。

  • 如果不向新的ArrayList中添加值,而只是更新原始列表,如何对此进行优化?

  • 我对Akka很陌生,我在尝试与我的演员进行集成测试时遇到了一些问题。 我是这样测试的: 当我这样做的时候: 一切看起来都还好。