问题标签 [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.

0 投票
1 回答
116 浏览

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 程序员,也不打算成为一名程序员。我只是使用预编译的二进制文件。

你能告诉我如何解决这个警告吗?

0 投票
0 回答
417 浏览

java - Avro Schema 反序列化 Index out of bound exception 错误 - 架构解析

我有 2 个应用程序,一个正在生成主题数据,另一个应用程序从主题接收数据。作家模式版本不同于读者(消费者)模式。生产者拥有新架构,而消费者拥有旧架构。使用模式注册表模式演变选项,我认为消费者可以成功工作,但我遇到了错误。看起来消费者正在查看特定记录中接收到的字段的顺序,而不是忽略未知字段。

来自 Avro 文档:

如果两者都是记录:

  1. 字段的顺序可能不同:字段按名称匹配。
  2. 两个记录中具有相同名称的字段的模式是递归解析的。
  3. 如果作者的记录包含一个名称不存在于读者记录中的字段,则忽略该字段的作者值。

生产者模式:

消费者模式:

消费者:SpecificRecord 类方法抛出错误

0 投票
1 回答
347 浏览

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 不会抛出错误,如图所示以上。

我的问题是:为什么验证通过,即使按照标准它是“不正确的”?

0 投票
1 回答
129 浏览

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 结束

0 投票
1 回答
379 浏览

c# - 是否可以为 Dictionary 对象创建 Avro 架构

尝试在 .net 中为 kafka 消息实现 avro 序列化和反序列化。消息模型如下。

那么,是否可以在 C# 中为Dictionary创建 Avro 模式?

0 投票
3 回答
1724 浏览

maven - Apache Avro maven 插件似乎忽略了配置

我正在使用 apache avro maven 插件,目的是从 avsc 生成 java。我在 m1 mac 上运行它(尽管我在网上没有看到任何关于这是一个问题的信息)。

问题似乎是我的配置没有被拾取。代码生成似乎使用默认值。例如

它正在寻找 avsc。

插件详细信息定义如下。

想知道是否有任何调试/添加日志记录等。

0 投票
1 回答
149 浏览

java - 如何将 Simple Java POJO 转换为 avro 模式 .avsc 文件,然后自动生成 avro 记录以最终将其推送到 Kafka 主题中?

我有 Java POJO

如何将其转换为 avro 模式,然后以编程方式进行 avro 记录?有没有办法通过使用注释在 out 文件夹中自动生成 avro 模式和类来做到这一点?我试图避免将模式生成为字符串,然后显式填充 avro 记录。

0 投票
1 回答
337 浏览

schema - Avro 架构:多条记录引用相同的数据类型问题:未知联合分支

我有 Avro Schema:客户记录导入 CustomerAddress 子集。

我有 JSON 有效负载:

当我运行命令时:java -jar avro-tools-1.8.2.jar fromjson --schema-file customer.avsc customer.json

得到以下异常:

0 投票
1 回答
72 浏览

avro - 在 Avro 中,为什么我们必须为正确的 Enum 类型指定一个“null”字符串?

我对 Avro 序列化完全陌生,我试图弄清楚复杂类型是如何定义的。

我对 Avro 如何在 Java 中生成枚举感到困惑。

注意该customer_type字段。如果我给出null,那么在我生成的源中,我会得到正确的Enum类型:

但是当我删除null值并customer_type以下列方式定义时:

声明更改为:

那个“null”字符串是什么意思?它为什么如此重要 ?

我已经尝试过浏览 AVRO 规范,但没有什么给我一个明确的答案,为什么它是这样工作的。

我正在使用AVRO Maven 插件。

AVRO 的任何初学者资源也将不胜感激。

谢谢你。

0 投票
1 回答
242 浏览

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 来做到这一点?