问题标签 [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.
apache-kafka - kafka:具有不同avro文件的生产者和消费者
我正在处理 2 个不同的 avro 文件:
avroConsumer:
avro制片人:
在编译过程中会发生反序列化错误,但我认为在消费者中定义“默认”属性应该使其正常工作。
参考:http ://avro.apache.org/docs/current/spec.html#Schema+Resolution
如果读取器的记录模式有一个包含默认值的字段,而写入器的模式没有同名的字段,那么读取器应该使用其字段中的默认值。
你有什么想法吗?我可以定义与生产者 avro 文件不同的消费者 avro 文件吗?
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?
json - Avro Schema 格式异常 - “SecurityClassification” 不是定义的名称
我正在尝试使用这个 avro 模式
使用 avro-tools 生成和 avro 文件:
但我收到以下错误消息:
线程“main”org.apache.avro.SchemaParseException 中的异常:“SecurityClassification”不是定义的名称。“securityClassification”字段的类型必须是定义的名称或 {“type”: ...} 表达式。
谁能告诉,为什么 SecurityClassification 没有被识别为定义的名称?
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 是输出目录
scala - 读取 Avro 文件时不是数据文件错误
我有一个包含 Avro 格式数据的文件。我想将这些数据读入 GenericRecord 类型的数据结构或任何其他类型的数据结构,以便能够将其从 Kafka 发送到 Spark。
我尝试使用 DataFileReader,但结果是这个错误:
这是生成它的代码:
我该如何解决这个错误?
这就是我的 Avro 数据架构的样子:
这是我试图读取的数据(它是由这个工具生成的):
avro - 如何在 Avro Schema 中创建记录列表
我有一个如下所述的 Avro Schema。
我想再创建一个与上述相同类型的记录。或者我的意思是说我想创建每个记录的架构与上面相同的记录列表。如何在单个 Avro 文件架构中实现它?
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 类,但我需要做相反的事情。
在此先感谢您的帮助
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代码:
谢谢,
爱因。
c# - 将架构添加到 Avro 片段 .Net
问题如下。
脚步:
- 应用程序将一些自定义对象转换为 avro 片段(字节数组);
- 这个 avro 片段被发送到 EventData 对象中的事件中心;
- 事件中心触发一个从事件中心接收 Mcrosoft.ServiceBus.Messaging.EventData 的 azure 函数;
- 我可以提取 EventData 的主体,它包含点 1 的 avro 片段(字节数组)。
我正在使用 Microsoft.Hadoop.Avro。
我有原始自定义对象的架构(第 1 点),所以我尝试创建一个从 avro 片段读取的通用读取器,但我收到以下错误:
流中的 Avro 对象容器无效。无法识别标头。
似乎 Microsoft.Hadoop.Avro 只能管理完整的 avro 文件(标题 + 架构 + 正文)而不是 avro 片段(正文)。
使用 java avro-tool 我可以将模式添加到 avro 片段。.Net 或 .Net Core 也可以吗?我能怎么做?
为简单起见,我将来自事件中心的 EventData 替换为相关的 avro 文件。
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 个