Apache Avro - запись сериализованных данных в поток - PullRequest
0 голосов
/ 09 апреля 2020

Я создаю короткий пример apache avro с python, после чего выполните c: (https://avro.apache.org/docs/current/gettingstartedpython.html)

import avro.schema
from avro.datafile import DataFileReader, DataFileWriter
from avro.io import DatumReader, DatumWriter

schema = avro.schema.parse(open("user.avsc", "rb").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()

Довольно простой вариант использования, но я новичок в python и пытаюсь найти способ записать результат avro в поток вместо файла.

Может кто-нибудь помочь?

1 Ответ

0 голосов
/ 17 апреля 2020

Python имеет модуль io в стандартной библиотеке , который должен помочь с этим. Поскольку avro - это двоичный формат, вам нужно импортировать модуль BytesIO from the io. Затем вы можете использовать это как дескриптор открытого файла для двоичного файла.

Таким образом, вы бы изменили:

writer = DataFileWriter(open("users.avro", "wb"), DatumWriter(), schema)

На:

from io import BytesIO
bio = BytesIO()
writer = DataFileWriter(bio, DatumWriter(), schema)
...