这是一个问答,这意味着我正在分享我对我遇到的问题的解决方案/答案:
问题是 getting started guide来自 apache 站点的并不完全是最新的,经过一些摆弄之后,我设法让示例工作。
- 首先从 here 获取最新版本
- 转到 lang 下的 py3 子文件夹并通过 python 3 构建项目(阅读更多 here )
在 python 代码所在的同一文件夹中创建 user.avsc。
架构:
{ "namespace": "example.avro", "type": "record", "name": "User", "fields": [ {"name": "name", "type": "string"}, {"name": "favorite_number", "type": ["int", "null"]}, {"name": "favorite_color", "type": ["string", "null"]} ] }
根据下面提供的代码创建 .py(请注意,我必须对 here 中的代码进行少量更改才能使其正常工作)。
修改后的代码如下。
import avro.schema from avro.datafile import DataFileReader, DataFileWriter from avro.io import DatumReader, DatumWriter schema = avro.schema.Parse(open("user.avsc").read()) writer = DataFileWriter(open("users.avro", "wb"), DatumWriter(), schema) writer.append({"name": "Alyssa", "favorite_number": 256}) writer.append({"name": "Ben", "favorite_number": 7, "favorite_color": "red"}) writer.close() reader = DataFileReader(open("users.avro", "rb"), DatumReader()) for user in reader: print(user) reader.close()
最佳答案
- 首先从 here 获取最新版本
- 转到 lang 下的 py3 子文件夹并通过 python 3 构建项目(阅读更多 here )
在 python 代码所在的同一文件夹中创建 user.avsc。
架构:
{ "namespace": "example.avro", "type": "record", "name": "User", "fields": [ {"name": "name", "type": "string"}, {"name": "favorite_number", "type": ["int", "null"]}, {"name": "favorite_color", "type": ["string", "null"]} ] }
根据下面提供的代码创建 .py(请注意,我必须对 here 中的代码进行少量更改才能使其正常工作)。
修改后的代码如下。
import avro.schema from avro.datafile import DataFileReader, DataFileWriter from avro.io import DatumReader, DatumWriter schema = avro.schema.Parse(open("user.avsc").read()) writer = DataFileWriter(open("users.avro", "wb"), DatumWriter(), schema) writer.append({"name": "Alyssa", "favorite_number": 256}) writer.append({"name": "Ben", "favorite_number": 7, "favorite_color": "red"}) writer.close() reader = DataFileReader(open("users.avro", "rb"), DatumReader()) for user in reader: print(user) reader.close()
关于python - 从 Python 3 和 Avro 1.7.6 开始,步骤是什么? (问答),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21878755/