问题标签 [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 投票
0 回答
156 浏览

apache-kafka - kafka:具有不同avro文件的生产者和消费者

我正在处理 2 个不同的 avro 文件:

avroConsumer

avro制片人

在编译过程中会发生反序列化错误,但我认为在消费者中定义“默认”属性应该使其正常工作。
参考:http ://avro.apache.org/docs/current/spec.html#Schema+Resolution

如果读取器的记录模式有一个包含默认值的字段,而写入器的模式没有同名的字段,那么读取器应该使用其字段中的默认值。

你有什么想法吗?我可以定义与生产者 avro 文件不同的消费者 avro 文件吗?

0 投票
1 回答
1751 浏览

java - 如何创建 AvroDeserialzationSchema 并在 Flink Kafka Consumer 中使用?

我正在尝试为 kafka avro 序列化主题创建一个 flink 消费者。我有 kafka 主题流式传输 avro 序列化数据。我可以通过 avroconsoleconsumer 看到它。

Flink 1.6.0 增加了一个,AvroDeserializationSchema但我找不到完整的用法示例。是的,有一些似乎在 1.6.0 添加类之前生成了一个 avrodeserialization 类。

我有一个通过 avro-tools 生成的 avro 类。

现在,我一直在尝试遵循现有的示例,但它们的不同之处足以让我无法继续进行下去。(我不经常用 Java 编程)

大多数使用以下某种形式

其中 Myclass 是通过 avro-tools jar 生成的 avro 类。这是正确的方法吗?在执行此操作并利用内部 flink 1.6.0 avrodeserializationschema 类时,我遇到了一些私有/公共访问问题。我是否必须创建一个新类并扩展 avrodeserializationschema?

0 投票
1 回答
464 浏览

json - Avro Schema 格式异常 - “SecurityClassification” 不是定义的名称

我正在尝试使用这个 avro 模式

使用 avro-tools 生成和 avro 文件:

但我收到以下错误消息:

线程“main”org.apache.avro.SchemaParseException 中的异常:“SecurityClassification”不是定义的名称。“securityClassification”字段的类型必须是定义的名称或 {“type”: ...} 表达式。

谁能告诉,为什么 SecurityClassification 没有被识别为定义的名称?

0 投票
1 回答
872 浏览

avro - 如何为具有 30MB+ 数据的大型平面文件生成单个 .avro 文件

目前正在为 10 kb 文件生成两个 avro 文件,如果我对实际文件 (30MB+) 遵循相同的操作,我将生成 n 个文件。

所以即使源文件很大,也需要一个只生成一两个 .avro 文件的解决方案。

还有什么方法可以避免手动声明列名。

目前的做法...

spark-shell --packages com.databricks:spark-csv_2.10:1.5.0,com.databricks:spark-avro_2.10:2.0.1

导入 org.apache.spark.sql.types.{StructType, StructField, StringType}

// 'co' 和 'id' 列名和类型的手动模式声明 val customSchema = StructType(Array( StructField("ind", StringType, true), StructField("co", StringType, true)))

val df = sqlContext.read.format("com.databricks.spark.csv").option("comment", "\"").option("quote", "|").schema(customSchema).load( “/tmp/file.txt”)

df.write.format("com.databricks.spark.avro").save("/tmp/avroout")

// 注意:/tmp/file.txt 是输入文件/目录,/tmp/avroout 是输出目录

0 投票
1 回答
2775 浏览

scala - 读取 Avro 文件时不是数据文件错误

我有一个包含 Avro 格式数据的文件。我想将这些数据读入 GenericRecord 类型的数据结构或任何其他类型的数据结构,以便能够将其从 Kafka 发送到 Spark。

我尝试使用 DataFileReader,但结果是这个错误:

这是生成它的代码:

我该如何解决这个错误?

这就是我的 Avro 数据架构的样子:

这是我试图读取的数据(它是由这个工具生成的):

0 投票
1 回答
1345 浏览

avro - 如何在 Avro Schema 中创建记录列表

我有一个如下所述的 Avro Schema。

我想再创建一个与上述相同类型的记录。或者我的意思是说我想创建每个记录的架构与上面相同的记录列表。如何在单个 Avro 文件架构中实现它?

0 投票
1 回答
2310 浏览

scala - 在构建时从 scala 案例类生成 avsc avro 模式

我想从 scala 案例类生成一个 avro 模式。

假设我有以下 scala 案例类:

case class User(name : String, favorite_number: Int, favorite_color: String)

相关的 avro 架构是:

有没有办法在构建时生成 avro scehma ?例如使用 sbt 吗?我看到sbt-avro4s允许从 avro 模式构建 scala 类,但我需要做相反的事情。

在此先感谢您的帮助

0 投票
0 回答
471 浏览

java - Avro SchemaBuilder - 十进制逻辑类型的“无法覆盖属性:比例”

我正在尝试从 java 生成一个 Avro 模式来描述我可以通过 JDBC 访问的表。

我使用 JDBC getMetaData() 方法来检索相关的列元数据并将其存储在“columnDetail”对象的数组列表中。

列详细信息定义为

然后我遍历这个数组列表并使用 org.apache.avro.SchemaBuilder 类构建 Avro 模式。

我的问题是十进制逻辑类型。

我遍历数组列表两次。第一次将所有字段添加到 FieldAssembler,第二次修改某些字节字段以添加十进制逻辑数据类型。

我遇到的问题是,如果十进制比例值在迭代之间发生变化,我会收到错误消息。

当它遍历 columnDetail 数组时,只要值“scale”不变,它就会工作。如果它确实发生了变化,则会发生以下情况:

我可以通过硬编码十进制大小来防止这种情况。即我可以替换

然而,对于所有十进制字段,这最终会得到相同大小的数据类型,这是不可取的。

有人可以帮忙吗?

Java:1.8.0_202 Avro:avro-1.8.2.jar

我的java代码:

谢谢,

爱因。

0 投票
1 回答
841 浏览

c# - 将架构添加到 Avro 片段 .Net

问题如下。

脚步:

  1. 应用程序将一些自定义对象转换为 avro 片段(字节数组);
  2. 这个 avro 片段被发送到 EventData 对象中的事件中心;
  3. 事件中心触发一个从事件中心接收 Mcrosoft.ServiceBus.Messaging.EventData 的 azure 函数;
  4. 我可以提取 EventData 的主体,它包含点 1 的 avro 片段(字节数组)。

我正在使用 Microsoft.Hadoop.Avro。

我有原始自定义对象的架构(第 1 点),所以我尝试创建一个从 avro 片段读取的通用读取器,但我收到以下错误:

流中的 Avro 对象容器无效。无法识别标头。

似乎 Microsoft.Hadoop.Avro 只能管理完整的 avro 文件(标题 + 架构 + 正文)而不是 avro 片段(正文)。

使用 java avro-tool 我可以将模式添加到 avro 片段。.Net 或 .Net Core 也可以吗?我能怎么做?

为简单起见,我将来自事件中心的 EventData 替换为相关的 avro 文件。

0 投票
0 回答
513 浏览

avro - Avro SpecificSchemaCompiler 空指针异常

我正在尝试以编程方式生成 avro java 类。我已经定义了 avro 模式文件。我正在使用此模式调用 SpecificSchemaCompiler 对象,然后调用 compileToDestination(src,dest) 方法来获取生成的类。但是我面临一个空指针异常。

我在现有工作区中遇到的上述问题。所以我在eclipse中新建了一个java项目,简单地尝试了上面的方法。它在那里工作,我得到了生成的java文件。

我正在使用以下架构。

{ "type": "record", "namespace": "gov.mrm", "name": "Customer", "doc": "Avro Schema for our Customer",
"fields": [ { "name": " first_name”,“type”:“string”,“doc”:“客户的名字”},{“name”:“last_name”,“type”:“string”,“doc”:“客户的姓氏” }, { "name": "age", "type": "int", "doc": "注册时的年龄" }, { "name": "height", "type": "float", "doc": "注册时身高cm" }, { "name":"weight", "type": "float", "doc": "注册时的重量,单位为 kg" }, { "name": "automated_email", "type": "boolean", "default": true , "doc": "指示用户是否注册营销电子邮件的字段" } ] }

公共类测试{

}

我收到以下异常。

线程“主”java.lang.RuntimeException 中的异常:org.apache.avro.compiler.specific.SpecificCompiler.renderTemplate(SpecificCompiler.java:387) 的 java.lang.NullPointerException 在 org.apache.avro.compiler.specific.SpecificCompiler .compile(SpecificCompiler.java:456) at org.apache.avro.compiler.specific.SpecificCompiler.compileToDestination(SpecificCompiler.java:374) at main.avro.Test.main(Test.java:14) 原因:java。 org.apache.velocity.runtime.RuntimeInstance.getTemplate(RuntimeInstance.java:831) 处 org.apache.velocity.runtime.RuntimeInstance.getTemplate(RuntimeInstance.java:813) 处 org.apache.velocity.app 处的 lang.NullPointerException。 VelocityEngine.getTemplate(VelocityEngine.java:470) at org.apache.avro.compiler.specific.SpecificCompiler.renderTemplate(SpecificCompiler.java:385) ... 还有 3 个