如何使用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”相对应的所有值

czh28690 回答:如何使用python从Avro文件中打印特定列

来自docs

  

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


要将结果列表保存到csv,您可以:

import csv

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

您可以阅读有关使用csv文件here的更多信息。

本文链接:https://www.f2er.com/3167676.html

大家都在问