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