问题标签 [avro-tools]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - avro-tools 抱怨:无法加载类“org.slf4j.impl.StaticLoggerBinder” - 或者 - 如何在 java 中正确给出类路径
请在结束此问题之前考虑这一点:
为 websphere 获取解决方案等对我没有帮助。我运行命令行工具,而不是服务器。
所以如果你认为它应该有帮助,请告诉我如何,因为我不明白它怎么可能有帮助。谢谢你。
运行 avro-tools 我得到
我认为这些只是警告,修复它并不重要,因为我得到的结果似乎是正确的。
在这里阅读不是全部而是很多类似的问题,我发现我需要
slf4j-nop.jar、slf4j-simple.jar、slf4j-log4j12.jar、slf4j-jdk14.jar 或 logback-classic.jar。
我下载slf4j-nop-1.7.3.jar
并运行 avro 工具,如下所示:
我也试过
但没有区别。
我不是 Java 程序员,也不打算成为一名程序员。我只是使用预编译的二进制文件。
你能告诉我如何解决这个警告吗?
java - Avro Schema 反序列化 Index out of bound exception 错误 - 架构解析
我有 2 个应用程序,一个正在生成主题数据,另一个应用程序从主题接收数据。作家模式版本不同于读者(消费者)模式。生产者拥有新架构,而消费者拥有旧架构。使用模式注册表模式演变选项,我认为消费者可以成功工作,但我遇到了错误。看起来消费者正在查看特定记录中接收到的字段的顺序,而不是忽略未知字段。
来自 Avro 文档:
如果两者都是记录:
- 字段的顺序可能不同:字段按名称匹配。
- 两个记录中具有相同名称的字段的模式是递归解析的。
- 如果作者的记录包含一个名称不存在于读者记录中的字段,则忽略该字段的作者值。
生产者模式:
消费者模式:
消费者:SpecificRecord 类方法抛出错误
python-3.x - Avro 模式验证
根据 Avro Schema 规范(用于联合):https ://avro.apache.org/docs/current/spec.html
联合,如上所述,联合使用 JSON 数组表示。例如,["null", "string"] 声明一个模式,它可以是 null 也可以是字符串。
(
请注意,当为类型为联合的记录字段指定默认值时,默认值的类型必须与联合的第一个元素匹配。
因此,对于包含“null”的联合,通常首先列出“null”,因为此类联合的默认值通常为 null。)
从标准来看,在声明联合时,第一个字必须是默认值,第二个字必须是数据类型。
在我们的产品中,我们使用具有以下 Schema 的 Avro 编码:
我们发现,虽然 Unions 有一个“必须”要求第一项是默认值,但当我们颠倒顺序 (["string", "null"]) 时,Schema-validator 不会抛出错误,如图所示以上。
我的问题是:为什么验证通过,即使按照标准它是“不正确的”?
confluent-schema-registry - 使用 scala 的 AVRO 序列化问题 kafkaproducer
我收到此错误,我尝试将 schemaregistry 的端口从 **8081 更改为 18081。我还添加了 avro-tools、kafka-schema-registry 等依赖项。
“first_name”:“John”,“last_name”:“Doe”,“age”:34,“height”:178.0,“weight”:75.0,“automated_email”:false} 21/07/18 19:26:56 INFO clients.Metadata:集群 ID:Gv4kdRbATLK6YtRxsf94vw 线程“主”org.apache.kafka.common.errors.SerializationException 中的异常:序列化 Avro 消息时出错原因:java.net.SocketException:来自服务器的文件意外结束
at java.base/sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:866) at java.base/sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:689) at java.base/sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:863) at java.base/sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:689) at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1610) at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1515) at java.base/java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:527) at io.confluent.kafka.schemaregistry.client.rest.RestService.sendHttpRequest(RestService.java:212) at io.confluent.kafka.schemaregistry.client.rest.RestService.httpRequest(RestService.java:256) at io.confluent.kafka.schemaregistry.client.rest.RestService.registerSchema(RestService.java:356) at io.confluent.kafka.schemaregistry.client.rest.RestService.registerSchema(RestService.java:348) at io.confluent.kafka.schemaregistry.client.rest.RestService.registerSchema(RestService.java:334) at io.confluent.kafka.schemaregistry.client.CachedSchemaRegistryClient.registerAndGetId(CachedSchemaRegistryClient.java:168) at io.confluent.kafka.schemaregistry.client.CachedSchemaRegistryClient.register(CachedSchemaRegistryClient.java:222) at io.confluent.kafka.schemaregistry.client.CachedSchemaRegistryClient.register(CachedSchemaRegistryClient.java:198) at io.confluent.kafka.serializers.AbstractKafkaAvroSerializer.serializeImpl(AbstractKafkaAvroSerializer.java:70) at io.confluent.kafka.serializers.KafkaAvroSerializer.serialize(KafkaAvroSerializer.java:53) at org.apache.kafka.clients.producer.KafkaProducer.doSend(KafkaProducer.java:807) at org.apache.kafka.clients.producer.KafkaProducer.send(KafkaProducer.java:784) at com.example.Producerexample$.main(Producerexample.scala:50) at com.example.Producerexample.main(Producerexample.scala)
进程以退出代码 1 结束
c# - 是否可以为 Dictionary 对象创建 Avro 架构
尝试在 .net 中为 kafka 消息实现 avro 序列化和反序列化。消息模型如下。
那么,是否可以在 C# 中为Dictionary创建 Avro 模式?
maven - Apache Avro maven 插件似乎忽略了配置
我正在使用 apache avro maven 插件,目的是从 avsc 生成 java。我在 m1 mac 上运行它(尽管我在网上没有看到任何关于这是一个问题的信息)。
问题似乎是我的配置没有被拾取。代码生成似乎使用默认值。例如
它正在寻找 avsc。
插件详细信息定义如下。
想知道是否有任何调试/添加日志记录等。
java - 如何将 Simple Java POJO 转换为 avro 模式 .avsc 文件,然后自动生成 avro 记录以最终将其推送到 Kafka 主题中?
我有 Java POJO
如何将其转换为 avro 模式,然后以编程方式进行 avro 记录?有没有办法通过使用注释在 out 文件夹中自动生成 avro 模式和类来做到这一点?我试图避免将模式生成为字符串,然后显式填充 avro 记录。
schema - Avro 架构:多条记录引用相同的数据类型问题:未知联合分支
我有 Avro Schema:客户记录导入 CustomerAddress 子集。
我有 JSON 有效负载:
当我运行命令时:java -jar avro-tools-1.8.2.jar fromjson --schema-file customer.avsc customer.json
得到以下异常:
avro - 在 Avro 中,为什么我们必须为正确的 Enum 类型指定一个“null”字符串?
我对 Avro 序列化完全陌生,我试图弄清楚复杂类型是如何定义的。
我对 Avro 如何在 Java 中生成枚举感到困惑。
注意该customer_type
字段。如果我给出null
,那么在我生成的源中,我会得到正确的Enum
类型:
但是当我删除null
值并customer_type
以下列方式定义时:
声明更改为:
那个“null”字符串是什么意思?它为什么如此重要 ?
我已经尝试过浏览 AVRO 规范,但没有什么给我一个明确的答案,为什么它是这样工作的。
我正在使用AVRO Maven 插件。
AVRO 的任何初学者资源也将不胜感激。
谢谢你。
java - 为什么字符串的 Avro 字段现在需要 avro.java.string 类型?
在 Avro IDL 中,我有一条消息记录,定义如下:
我在另一个具有空联合的记录中使用此记录:
我们有一个使用 1.10.2 版本的 Java Kafka 消费者(我们正在使用 Confluent 平台)avro-maven-plugin
,配置为<stringType>String</stringType>
当我们拨打这样的电话时:
我们在第二行收到以下错误:class org.apache.avro.util.Utf8 cannot be cast to class java.lang.String
以前,Invoice 对象被定义为:
我们没有收到这个错误。我们发现在我们的模式文件中,从
至
纠正问题。
我不清楚为什么添加工会会导致这种行为变化。我是否应该使用 声明架构中的所有字符串,avro.java.string
如果是,我该如何使用 Avro IDL 来做到这一点?