将 AVDL 文件转换成 Apache 的 avro python 包可以解析的文件

Converting an AVDL file into something Apache's avro python package can parse

我想做的是获取一个 .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 包可以协助我浏览数据。

任何人都可以对此提供一些见解吗?谢谢。

答案是使用 idl2schemata 命令和 avro-tools.jar,为它提供一个输出目录,它可以将 .avsc 文件写入其中。然后可以读取 .avsc 文件 AVRO python package.

例如:

java -jar avro-tools.jar idl2schemata src/test/idl/input/namespaces.avdl /tmp/