0
我有以下的Avro架构Avro的genericdata.Record忽略的数据类型
{ "namespace": "example.avro",
"type": "record",
"name": "User",
"fields": [
{"name": "name", "type": "string"},
{"name": "favorite_number", "type": ["int", "null"]},
{"name": "favorite_color", "type": ["string", "null"]}
]
}
我用下面的代码片段设置一个记录
val schema = new Schema.Parser().parse(new File("data/user.avsc"))
val user1 = new GenericData.Record(schema) //strangely this schema only checks for valid fields NOT types.
user1.put("name", "Fred")
user1.put("favorite_number", "Jones")
我本来以为,这将无法验证针对该架构
当我添加行
user1.put("last_name", 100)
它会产生一个运行时错误,这也是我期望的第一种情况。
在线程异常 “主要” org.apache.avro.AvroRuntimeException:不是有效的架构领域:在org.apache.avro.generic.GenericData $ Record.put(GenericData.java:125) 姓氏 在csv2avro $。主要(csv2avro.scala:40) 在csv2avro.main(csv2avro.scala)
这是怎么回事吗?
Avro只会在尝试序列化记录时检查类型和字段名称。在你的情况下,last_name没有在模式中声明。 – alexeipab