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.
ところで、ファイルの 'head' を実行し、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())
前もって感謝します。