将 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/
我想做的是获取一个 .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/