我有一個AVRO文件(由JAVA創建),好像是某種壓縮文件,用於hadoop/mapreduce,我想將其解壓縮(反序列化)到一個平面文件。每行記錄。使用Python讀取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())
在感謝提前。
https://en.wikipedia.org/wiki/Acronym,Java和Avro不是首字母縮寫詞 –
@Steve Kuo您可以使用各種語言創建AVRO文件,例如使用JAVA/Python/EXCEL創建CSV文件。 ?我不是說AVRO文件是JAVA,只是爲了給讀者提供更多關於文件來自哪裏的信息..不知道會有幫助還是誤導性的 –
我只是指出Java和Avro是單詞,而不是縮寫,因此不應該寫成全部大寫 –