ファイルを lzo 圧縮する

Pocket

ビッグデータを扱っていると、Hadoop を使わざる得ない場合ってありますよね
もちろん、扱うデータは大きいので圧縮しないと大変なことになります
ここでは、Hadoop で使える圧縮形式の lzo の圧縮について書きます
Hadoop では lzo をデフォルトではサポートしてません
その辺は別途調べてくださいね

$ lzop hoge.tsv
$ hadoop fs -copyFromLocal hoge.tsv.lzo hoge.tsv.lzo
$ hadoop jar /usr/lib/hadoop/lib/hadoop-lzo-0.4.10.jar com.hadoop.compression.lzo.LzoIndexer hoge.tsv.lzo
OR
$ hadoop jar /usr/lib/hadoop/lib/hadoop-lzo-0.4.10.jar com.hadoop.compression.lzo.DistributedLzoIndexer hoge.tsv.lzo

以下のようなシェルスクリプトで lzo 圧縮、HDFS へのコピー、インデックス作成をやれば便利かも

#!/bin/bash
for i in *.tsv
do
    lzop ${i}
    hadoop fs -copyFromLocal ${i}.lzo ${i}.lzo
    hadoop jar /usr/lib/hadoop/lib/hadoop-lzo-0.4.10.jar com.hadoop.compression.lzo.DistributedLzoIndexer ${i}.lzo
    rm -rf ${i} ${i}.lzo
done

コメントを残す