[英]If the avro schema is stored with the data, why does the java avro api need me to supply a schema file?
在某些情况下,Microsoft Azure 决定以 avro 格式转储数据。 从我的角度来看,有问题的数据只是 json 记录。 所以,我只想从 avro 文件中返回我的 json 数据。
我正在研究如何“反序列化”avro 数据,以及此处的示例:
https://avro.apache.org/docs/1.8.1/gettingstartedjava.html
提出索赔:
Data in Avro is always stored with its corresponding schema, meaning we can always read a serialized item regardless of whether we know the schema ahead of time.
不幸的是,这些示例确实需要提前了解架构:
DatumReader<GenericRecord> datumReader = new GenericDatumReader<GenericRecord>(schema);
DataFileReader<GenericRecord> dataFileReader = new DataFileReader<GenericRecord>(file, datumReader);
我一定遗漏了一些东西,我只想要我的数据(文本/json)格式,脱离 avro。 有没有办法在不知道架构的情况下做到这一点? avro 不能从文件本身中读取它吗?
既然已经有了获取 json 的工具,为什么还要写代码呢?
java -jar avro-tools-1.8.2.jar tojson data.avro > output.json
http://central.maven.org/maven2/org/apache/avro/avro-tools/1.8.2/avro-tools-1.8.2.jar
否则,您的文件有一个架构,您必须在读取文件内容之前先提取它,这正是上述工具的源代码所做的
您需要提供读者的架构,以便 Avro 可以执行架构解析
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.