java - org.apache.avro.InvalidNumberEncodingException:无效的长编码
问题描述
我尝试反序列化来自主题的 avro 数据。我尝试了两种方式。通过使用 VALUE_DESERIALIZER_CLASS_CONFIG 作为“org.apache.kafka.common.serialization.ByteArrayDeserializer”
props.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, "org.apache.kafka.common.serialization.ByteArrayDeserializer");
通过这种方式,我将记录作为字节数组获取。之后通过使用 avro 模式并反序列化它可以正常工作。
但是,如果我曾经反序列化为字符串,然后转换为字节,它就不起作用了。通过使用 VALUE_DESERIALIZER_CLASS_CONFIG 作为“org.apache.kafka.common.serialization.StringDeserializer”
props.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, "org.apache.kafka.common.serialization.StringDeserializer");
通过这种方式,我将记录作为字符串。之后,我将字符串转换为字节数组(字节 [])并传递字节以反序列化 avro 记录,然后得到org.apache.avro.InvalidNumberEncodingException: Invalid long encoding
如果我们使用 StringDeserializer。string->byte[]->avro ==> 不工作(获取 org.apache.avro.InvalidNumberEncodingException:无效的长编码)
但是通过使用 ByteArrayDeserializer byte->avro => 工作
解决方案
推荐阅读
- sql - 使用 SQL 备份和 FTP 将 SQL Server 备份还原到另一台服务器
- asp.net - 是否可以在 IIS 服务器中运行 asp.net 和 java web 应用程序?
- firebase - Firebase 云功能在 https.onrequest() 上读取/更新数据库
- excel - 仅复制和粘贴具有值的单元格
- node.js - 使用 mongoose 应该使用哪种方法来更新 mongodb 中的文档?
- sql - 在 postgresql 中查看
- java - 为什么计时器忽略格式?
- javascript - 如何在 Nuxt 中渲染异步和动态组件?
- c - 将指针转换为用于散列的数值 - 我应该使用 `uintptr_t` 还是 `intptr_t`?
- javascript - 如何等待 js 导出的 api 调用?