使用python比较文本文件与avro文件中的数据

时间:2018-02-09 06:43:00

标签: python python-3.6 avro

我是Python的新手,所以请耐心等待。 我使用的是Python3.6.4,我希望使用Python比较文本文件中的数据和我的Avro数据集中的数据。我的文本文件中的数据将以管道分隔,并且将来自Relational数据库中的表。 请帮忙。提前致谢。

1 个答案:

答案 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")