我想要能够做的是采取。avdl文件并将其解析为python。我想利用python内部的信息。
根据文档,Apache的python包不处理.avdl文件。我需要使用他们的avro-tools
将。avdl文件转换成它知道如何解析的东西。
根据https://avro.apache.org/docs/current/idl.html上的文档,我可以使用以下命令将.avdl文件转换为.avpr文件:
java -jar avro-tools.jar idl src/test/idl/input/namespaces.avdl /tmp/namespaces.avpr
我用Avro-tools运行我的。avdl文件,它生成了一个。avpr文件。
不清楚的是我如何使用python包来解释这些数据。我尝试了一些简单的方法…
schema = avro.schema.parse(open("my.avpr", "rb").read())
但是会产生错误:
SchemaParseException: No "type" property:
我相信avro.schema.parse
是设计来解析.avsc文件(?)。然而,目前还不清楚我如何使用avro-tools
将我的。avdl转换为。avsc。这可能吗?
我猜我遗漏了很多部分,而且我还不太明白所有这些文件的目的是什么。
看起来。avpr是一个JSON文件(?),所以我可以自己读取和解释它,但我希望有一个python包可以帮助我导航数据。
有人能对此提供一些见解吗?谢谢你。
答案是在avro-tools.jar中使用idl2schemata
命令,为它提供一个输出目录,它可以将.avsc文件写入该目录。.avsc文件可以读取AVRO python包。
例如:
java -jar avro-tools.jar idl2schemata src/test/idl/input/namespaces.avdl /tmp/