pandas概要PythonでAvroのファイルを扱う。avro-python3より速いと噂のfastavroを利用。pandavroを使ったpandasとの連携も試す。いう名前で保存しておく。下記はdictionaryのlist形式のレコード情報を保存する処理。)ここではレコード追加時にファイルを「wb」で開いているが「ab+」などで開けば追記も可能。fastavro.writerの実装は下記のようになっている。https://github.com/fastavro/fastavro/blob/0.22.3/fastavro/_write.pyx#L551fastavro.Writerを開いてflushするところまで自動でやっていることがわかる。圧縮指定writerのcodec引数にdeflateかsnappyを指定して圧縮することができる。)snappyをインストールする際はpython-snappyを入れておく。condaで入れると手っ取り早い。python-snappy1レコードずつwritefastavro.writerは出力ごとにflushしてしまうので、ループして1レコードずつ出力するような処理には向かない。1レコードずつの出力をする場合はWriterを自前で定義して、最後にflushするような処理を書く。writer.flush()上記の処理をもう少し簡易に書くために、適当なcontextmanagerでも作ってみる。fo.close()これを使って書き込む。writer.write(record)sync_intervalの指定sync_intervalを指定すると、指定レコード数が書き込まれるたびにflushする。デフォルトは1万6千。flush頻度が高すぎるとパフォーマンスにも圧縮サイズにも影響する。sync_intervalが100の場合と10万の場合で、100万レコードを出力してみる。)パフォーマンスはこんな感じになる(10回計測した平均)。417Kこの例では同じレコードを100万回保存しているので過剰に圧縮効率が良くなっているが、ブロックサイズが大きい方が圧縮を効かせやすいのは確かなところ。Avroファイルの読み込み1レコードずつループしながら読み込む例。append=True)pandavro.to_avro(v1.5.0)のソースコードは下記。TensorFlowでTFRecordの読み書きをする。shellでちょっと確認。(1)リンク株式会社iMindスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。