繁体   English   中英

使用Python读取AVRO文件

[英]Read AVRO file using Python

我有一个AVRO文件(由JAVA创建),看起来它是hadoop / mapreduce的某种压缩文件,我想将其解压缩(反序列化)为平面文件。 每行记录。

我了解到有一个用于python的AVRO包 ,我正确安装了它。 并运行示例以读取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())

提前致谢。

试试pip install python-snappy - 确保你先安装了snappy

问题是,如果没有安装Xcode命令行工具,你就无法正常工作。 您可以在命令提示符下键入gcc来检查它是否已安装。 如果没有,则输入xcode-select –-install进行安装。 然后安装python-snappy应该工作。 谢谢斌!

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> input

更多信息请参考此处

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM