4

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())

前もって感謝します。

4

3 に答える 3

6

試してください-最初にsnappypip install python-snappyがインストールされていることを確認してください。

于 2013-08-26T21:16:59.923 に答える
-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 > 入力

詳細はこちらを参照

于 2013-08-27T23:50:38.437 に答える