ビッグデータを扱っていると、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