我正在使用Apache Avro 1.8.2读取大型avro文件。但是,我想跳过前N个记录或使用5个线程处理文件的各个部分。
有没有一种简单的方法可以在avro文件中查找而不导致数据损坏,而不是依次遍历每个记录?我相信它是可拆分的格式,但是我不确定python avro模块是否支持安全地跳转到特定位置。
当前我所能做的就是逐行处理它:
reader = DataFileReader(open("users.avro", "rb"), DatumReader())
i = 0
for user in reader:
i += 1
if (i>10000):
break
答案 0 :(得分:0)
我不确定在标准avro
库中是否可以使用它,但是在fastavro
中有一个block_reader
接口,您应该可以使用。
如下所示:
import fastavro
with open("file.avro", "rb") as fp:
for block in fastavro.block_reader(fp, schema):
process_block(block)
process_block
是将在线程中运行的函数,它将执行以下操作:
def process_block(block):
for record in block:
process_record(record)