gpt4 book ai didi

java - 读取 Avro 文件给出 AvroTypeException : missing required field error (even though the new field is declared null in schema)

转载 作者:可可西里 更新时间:2023-11-01 14:26:34 24 4
gpt4 key购买 nike

我正在尝试反序列化/读取 Avro 文件,avro 数据文件没有新字段。即使新字段在模式中声明为 null,它也应该是可选的。但它仍然给我错误作为强制性的。

Exception in thread "main" org.apache.avro.AvroTypeException: Found com.kiran.avro.User, expecting com.kiran.avro.User, missing required field loc

AVRO 模式声明:

{"name": "loc", "type": ["string", "null"]}

使用代码读取文件:

DatumReader<User> userDatumReader = new SpecificDatumReader<User>(User.class);
DataFileReader<User> dataFileReader = new DataFileReader<User>(file, userDatumReader);

还有其他方法可以声明可选字段吗?

感谢提示/建议!!

最佳答案

"file"的内容是什么?

我可能是错的,但是如果你在模式中定义一个字段为 {"name": "loc", "type": ["string", "null"]},你仍然需要定义一个 loc 字段,即使对于 null。它应该类似于文件中的 "loc": null

尝试将 "default" 添加到此字段声明中:

{"name" : "loc",
"type" : ["null","string"] ,
"default" : null}

那么应该可以在文件中省略这个字段。

您还可以查看此问题 Avro: deserialize json - schema with optional fields 以获取更多信息和示例。

关于java - 读取 Avro 文件给出 AvroTypeException : missing required field error (even though the new field is declared null in schema),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38775322/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com