parquet形式で出力するとファイルサイズが増大する
apache pyarrowを使って任意のファイルをバイナリ形式で読み込み
そのバイナリをlistにつめてparquet形式で出力するということをやっています。
以下のソースで検証しているのですが、parquet形式で出力すると
ファイルサイズが元のファイルの7倍になります。
テキストファイルで出力したファイルを開いてみると、データは無圧縮状態のようで
圧縮がかかっていません。
なんとか圧縮をかけることはできないでしょうか?
# -*- coding: utf-8 -*-
import pyarrow as pa
import pyarrow.parquet as pq
open_data_path = "test_log_70mb.txt"
file_list = []
with open(open_data_path, 'rb') as f:
data = bytes(f.read())
file_list.append(data)
pa_data = [
pa.array(file_list)
]
pa_batch = pa.RecordBatch.from_arrays(pa_data, ["file_list"])
table = pa.Table.from_batches([pa_batch])
pq.write_table(table, "./test_parquet", compression="gzip")
結果
total 71734
-rwxrwxrwx 1 vagrant vagrant 423 Aug 25 02:05 test2.py
-rwxrwxrwx 1 vagrant vagrant 73454817 Aug 25 02:05 test_log_70mb.txt
vagrant@apex01:/vagrant/arrow_test$ python test2.py
vagrant@apex01:/vagrant/arrow_test$ ls -l
total 511880
-rwxrwxrwx 1 vagrant vagrant 423 Aug 25 02:05 test2.py
-rwxrwxrwx 1 vagrant vagrant 73454817 Aug 25 02:05 test_log_70mb.txt
-rwxrwxrwx 1 vagrant vagrant 450709316 Aug 25 02:05 test_parquet
環境
python 2.7
pyarrow 0.6.0