如何在python中提取avro文件的模式

ljx*_*xue 11 python schema avro

我正在尝试使用Python Avro库(https://pypi.python.org/pypi/avro)来读取由JAVA生成的AVRO文件.由于架构已嵌入avro文件中,为什么我需要指定架构文件?有没有办法自动提取它?

发现另一个叫做fastavro的软件包(https://pypi.python.org/pypi/fastavro)可以提取avro架构.手册是否在设计中指定了python arvo包中的模式文件?非常感谢你.

小智 7

我使用python 3.4和Avro包1.7.7

对于架构文件使用:

reader = avro.datafile.DataFileReader(open('file_name.avro',"rb"),avro.io.DatumReader())
schema = reader.meta
print(schema) 
Run Code Online (Sandbox Code Playgroud)


sds*_*sds 5

直接检查/usr/local/lib/python2.7/site-packages/avro/datafile.py揭示了答案:

reader = avro.datafile.DataFileReader(input,avro.io.DatumReader())
schema = reader.datum_reader.writers_schema
print schema
Run Code Online (Sandbox Code Playgroud)

奇怪的是,在Java中有一种特殊的方法:reader.getSchema().