簡體   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