我是Python的新手,所以请耐心等待。 我使用的是Python3.6.4,我希望使用Python比较文本文件中的数据和我的Avro数据集中的数据。我的文本文件中的数据将以管道分隔,并且将来自Relational数据库中的表。 请帮忙。提前致谢。
答案 0 :(得分:0)
谢谢Vikas。这是下面的代码。在这里,我将硬编码数据附加到avro文件,这很容易比较。但我的实际avro文件输出将是程序的输出,文本文件将是另一个的输出。 我必须比较这些文件。谢谢
import avro
import avro.schema
import avro.datafile
from avro.datafile import DataFileReader, DataFileWriter
from avro.io import DatumReader, DatumWriter
def writeAvro(fileName):
schema = avro.schema.Parse(open("testSchema.avsc", "rb").read())
writer = DataFileWriter(open("{}".format(fileName), "wb"), DatumWriter(), schema)
writer.append({"id": 1, "name" : "John", "age": 34})
writer.append({"id": 2, "name" : "Jane", "age": 134})
writer.append({"id": 3, "name" : "Davis"})
writer.close()
def readAvro(fileName):
reader = DataFileReader(open("{}".format(fileName), "rb"), DatumReader())
for record in reader:
#print(record.get('name'))
dict_name = record.get('name')
dict_id = record.get('id')
for p in expected:
if p['name'] == dict_name:
print(p)
reader.close()
expected = [{'name': 'John', 'id': 1, 'age': 34},
{'id': 2, 'name': 'Jane', 'age': 134},
{'id': 3, 'name': 'Davis', 'age': None}]
#print(expected)
writeAvro("test.avro")
readAvro("test.avro")