首页 > 解决方案 > 如何使用 python 从 Avro 文件中打印特定列

问题描述

我有以下代码打印 avro 文件中的所有值。但是,我想打印一个特定的列例如:

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

我想打印 avro 中存在的所有“key1”值。

这是我的代码

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' 对应的所有值

标签: pythonjsonpython-3.xavro

解决方案


文档

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 文件的更多信息。


推荐阅读