我有一个由JAVA创建的AVRO文件,似乎是一种用于hadoop/mapreduce的压缩文件,我想将其“解压缩”(反序列化)为平面文件。每条记录每行。
我了解到Python有一个AVRO package,并且我已经正确安装它。并运行示例以读取AVRO文件。但是,它出现了下面的错误,我想知道在阅读最简单的示例时发生了什么?有人能帮我解释下面的错误吗?
我了解到Python有一个AVRO package,并且我已经正确安装它。并运行示例以读取AVRO文件。但是,它出现了下面的错误,我想知道在阅读最简单的示例时发生了什么?有人能帮我解释下面的错误吗?
>>> reader = DataFileReader(open("/tmp/Stock_20130812104524.avro", "r"), DatumReader())
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/.../python2.7/site-packages/avro/datafile.py", line 240, in __init__
raise DataFileException('Unknown codec: %s.' % self.codec)
avro.datafile.DataFileException: Unknown codec: snappy.
顺便提一句,如果我对文件进行“头”操作,并使用VI打开AVRO文件的前几行,我可以看到模式定义以及一些垃圾奇怪的字符——可能是压缩内容。原始AVRO文件的起始位如下:
bj^A^D^Tavro.codec^Lsnappy^Vavro.schemaØ${"type":"record","name":"Stoc...
我不知道是否需要这些模式来读取AVRO文件,就像下面这样:
schema = avro.schema.parse(open("schema").read())
# include schema to do sth...
reader = DataFileReader(open("Stock_20130812104524.avro", "r"), DatumReader())
提前感谢。