我有一个要用给定模式读取的avro文件。模式提供是使用avro工具生成的。
有人可以帮助我了解薪金,col4和col5的架构吗?它显示这些列是固定类型的,逻辑类型是十进制。这意味着什么? 我有另一个数据完全相同的文件,但以上三列的架构不同。
{ “ type”:“记录”, “ name”:“ topLevelRecord”, “字段”:[{ “ name”:“ id”, “ type”:[“ int”,“ null”] },{ “ name”:“薪水”, “类型”:[{ “ type”:“ fixed”, “ name”:“ fixed”, “ namespace”:“ topLevelRecord.salary”, “大小”:5 “ logicalType”:“十进制”, “精度”:10, “比例”:3 }, “空值” ] },{ “ name”:“ name”, “ type”:[“ string”,“ null”] },{ “ name”:“ col4”, “类型”:[{ “ type”:“ fixed”, “ name”:“ fixed”, “ namespace”:“ topLevelRecord.col4”, “大小”:9 “ logicalType”:“十进制”, “精度”:20, “比例”:7 }, “空值” ] },{ “ name”:“ col5”, “类型”:[{ “ type”:“ fixed”, “ name”:“ fixed”, “ namespace”:“ topLevelRecord.col5”, “大小”:7 “ logicalType”:“十进制”, “精度”:15 “比例”:11 }, “空值” ] }] }
第二个文件的架构
{ “ type”:“记录”, “ name”:“ Complex_hive_avro”, “字段”:[{ “ name”:“ id”, “ type”:“ int” },{ “ name”:“薪水”, “类型”:{ “ type”:“ bytes”, “ logicalType”:“十进制”, “精度”:10, “比例”:3 } },{ “ name”:“ name”, “ type”:“ string” },{ “ name”:“ col4”, “类型”:{ “ type”:“ bytes”, “ logicalType”:“十进制”, “精度”:20, “比例”:7 } },{ “ name”:“ col5”, “类型”:{ “ type”:“ bytes”, “ logicalType”:“十进制”, “精度”:15 “比例”:11 } }] }
两个文件的数据完全相同,但十进制列的架构不同。我可以使用第二个架构,但是我的代码无法使用第一个架构。我该如何处理第一个架构?
仅供参考,两个文件都是使用来自JDBC服务器的数据创建的。但是第一个使用spark-avro,另一个使用本地avro api。
感谢您的帮助。