无法读取具有给定架构的Avro文件

时间:2019-09-03 10:46:39

标签: avro bigdecimal avro-tools

我有一个要用给定模式读取的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。

感谢您的帮助。

0 个答案:

没有答案