Ami*_*rHd 4 python apache schema python-3.x avro
这是一个问答,这意味着我正在分享我对我遇到的问题的解决方案/答案:
问题是来自 apache 站点的入门指南并不完全是最新的,经过一番摆弄后,我设法让示例工作。
在将要定位的 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"]}
]
}
Run Code Online (Sandbox Code Playgroud)从下面提供的代码创建 .py(请注意,我必须对此处的代码进行细微更改才能使其正常工作)。
修改后的代码如下。
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()
Run Code Online (Sandbox Code Playgroud)在将要定位的 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"]}
]
}
Run Code Online (Sandbox Code Playgroud)从下面提供的代码创建 .py(请注意,我必须对此处的代码进行细微更改才能使其正常工作)。
修改后的代码如下。
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()
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
6156 次 |
| 最近记录: |