Avro中存储二维数组遇Schema解析错误,求解决方案
解决Avro二维数组Schema解析错误的正确定义
你当前的Schema在定义二维数组时多嵌套了一层冗余的type字段,导致解析器无法识别合法的数组类型。
正确的Avro Schema定义
{ "namespace": "com.company", "type": "record", "name": "MyName", "doc" : "...", "fields": [ { "name": "MyArray", "type": { "type": "array", "items": { "type": "array", "items": "int" } } } ] }
错误原因说明
原Schema中,内层数组被错误地写成了{"type": {"type": "array","items": "int"}}——Avro的数组类型本身就是一个包含type: "array"和items字段的对象,不需要再在外层额外包裹一层type属性。这种冗余嵌套会让解析器误将内层数组的定义当成一个未注册的自定义类型,从而抛出Undefined type的错误。
用你提供的Python代码解析修正后的Schema,即可正常完成解析,不会再出现报错。
内容的提问来源于stack exchange,提问作者Hephaestus
相关产品推荐
相关产品推荐

