我有一个AVRO文件(由JAVA创建),看起来它是hadoop / mapreduce的某种压缩文件,我想将其解压缩(反序列化)为平面文件。每行记录。
我了解到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())
提前致谢。
答案 0 :(得分:3)
尝试pip install python-snappy
- 确保先安装snappy。
答案 1 :(得分:2)
问题是如果没有安装Xcode命令行工具,你就无法正常工作。您可以在命令提示符下键入gcc来检查它是否已安装。如果没有,请键入xcode-select –-install
进行安装。然后安装python-snappy应该工作。谢谢Bin!
答案 2 :(得分:-1)
wget http://www.us.apache.org/dist/avro/avro-1.7.5/java/avro-tools-1.7.5.jar
java -jar avro / avro-tools-1.7.5.jar tojson input.avro&gt;输入