Добавление нового поля / столбца в файл avro - PullRequest
0 голосов
/ 21 октября 2018

Предположим, у меня есть файл Avro, и я хотел бы знать, как добавить новое поле / столбец, например отметку времени, для хранения текущей системной отметки времени для каждой записи в python.

Я пытаюсь извлечь схему avro идобавьте timestamp field_name, а затем добавьте столбец значений timestamp в файл данных.

Я новичок в python и avro.Может ли кто-нибудь помочь мне в том, как действовать.

1 Ответ

0 голосов
/ 21 октября 2018

Если вы хотите сделать это с помощью библиотеки fastavro, вы сначала должны прочитать файл avro, чтобы получить схему и содержащиеся в ней записи:

import fastavro

with open('file.avro', 'rb') as fo:
    avro_reader = fastavro.reader(fo)
    schema = avro_reader.writer_schema
    records = list(avro_reader)

Затем измените schema, добавив новое поле:

schema["fields"].append({
    "name": "timestamp",
    "type": "long",
})

Дополните записи, добавив новое значение timestamp:

for record in records:
    record["timestamp"] = new_timestamp

И, наконец, запишите новый файл avro:

with open('new_file.avro', 'wb') as out:
    fastavro.writer(out, schema, records)

Возможно, вы захотите использовать логический тип для этого значения.См. спецификацию avro для получения более подробной информации.

...