Как напечатать определенный столбец из файла Avro, используя python - PullRequest
0 голосов
/ 04 ноября 2019

У меня есть следующий код, который печатает все значения из файла avro. Однако я хочу напечатать определенный столбец. Например:

{'key1': value1 , 'key2': value2} 

Я хочу напечатать все значения 'key1', присутствующие в avro.

Вот мой код

from avro.datafile import DataFileReader
from avro.io import DatumReader
reader = DataFileReader(open("abc.avro", "rb"), DatumReader())
for user in reader:
    print(user)

reader.close()

Я новичок в Avro и больших данных

Редактировать:

Вот исправленный код. Благодаря @Rithin

for user in reader:
print(user['key1'])

Это вернет все значения, соответствующие 'key1'

1 Ответ

1 голос
/ 04 ноября 2019

Из документов :

DataFileReader - это итератор, который возвращает дикты, соответствующие сериализованным элементам.

Поскольку он просто возвращаетсписок словарей, вы можете получить к ним доступ, используя row['key'].

Комбинируя это с пониманием списка, вы получите все значения для всех строк.

Пример:

all_values = [row['key1'] for row in list(reader)]
print(all_values)
[value1]

Чтобы сохранить этот результирующий список в json, вы можете:

import json

result = {'key1':all_values}

with open('output.json', 'w') as json_file:
  json.dump(result, json_file)

Подробнее о сохранении в json вы можете прочитать здесь .


Чтобы сохранить полученный список в csv,Вы можете:

import csv

with open('output.csv', 'w') as csv_file:
  writer = csv.writer(csv_file)
  writer.writerows(all_values)

Подробнее о работе с CSV-файлами вы можете прочитать здесь .

...