‡A Case Of Identity‡

頑張ります!

Hiveとか

HiveでSequenceFileかつ圧縮しているのに、容量が生の状態より大きいという状態になっていたのですが、セットすべきパラメータが違ったようです。

The right configuration parameter is:
set mapred.output.compression.type=BLOCK;

http://mail-archives.apache.org/mod_mbox/hadoop-hive-user/200907.mbox/%3C34fd060d0907272234l732f6ed2h70a136f1b611f046@mail.gmail.com%3E

これを設定したらきちんと圧縮されました。
HiveWikiには

SET io.seqfile.compression.type=BLOCK; -- NONE/RECORD/BLOCK (see below)

http://wiki.apache.org/hadoop/Hive/CompressedStorage

と書いてあるのですが、これではダメなようです。
bzip2がスプリット可能なファイル形式ということなので、使おうかと思ったのですがbzip2のスプリットがHadoopで利用可能(効果を発揮する)になるのがhadoop-0.21からみたいです。パッチはあるので使おうと思えば使えるようですが・・・。
[HADOOP-4012] Providing splitting support for bzip2 compressed files - ASF JIRA
Clouderaのhadoopを使っていることもあるので、とりあえずgzipでいいかなぁ・・・。
と思ってgzip圧縮に変えたら、できない・・・。

set hive.exec.compress.output=true;
mapred.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec;

なぜかと思ったら、Cloudera HadoopにNative圧縮ライブラリが置いてなかったからみたいです。${HADOOP_HOME}/lib/にCloudera Hadoopのソースに入っていたnativeディレクトリをそのまま配置したらできました。
yumインストールしたんですけど、最初から入れて置く方法あるんですかね?それとも、何かの拍子に消えたのかな・・・。