hadoopにInsert overwrite partitionコマンドを使用して、ハイブパーティション下のファイルを圧縮して小さなファイルの問題を解決しようとしています。インサートの上書きパーティションを使用したハイブ圧縮
問合せ:
SET hive.exec.compress.output=true;
SET mapred.max.split.size=256000000;
SET mapred.output.compression.type=BLOCK;
SET mapred.output.compression.codec=org.apache.hadoop.io.compress.SnappyCodec;
set hive.merge.mapredfiles=true;
set hive.merge.size.per.task=256000000;
set hive.merge.smallfiles.avgsize=256000000;
INSERT OVERWRITE TABLE tbl1 PARTITION (year=2016, month=03, day=11)
SELECT col1,col2,col3 from tbl1
WHERE year=2016 and month=03 and day=11;
入力ファイル:テストの目的のために
私は40メガバイトのサイズとHDFSでハイブのパーティション(2016年3月11日)の下に3つのファイルを持っています各。
2016/03/11/file1.csv
2016/03/11/file2.csv
2016/03/11/file3.csv
例私のブロックサイズは128ですので、出力ファイルは1つしか作成しません。しかし、私は3つの異なる圧縮ファイルを取得しています。
出力ファイルのサイズを制限するハイブ設定を手伝ってください。私が圧縮を使用していない場合、私は単一のファイルを取得しています。
ハイブバージョン:1.1
#Salmonerdは、あなたがそのマップだけの仕事は、私は基本的にハイブパーティションに上書きされ、インサート使用して大きなファイルに組み合わせることにより、小さなファイルの問題に対処しようとしていますので、何の減速が実行されていないがある言ったように。あなたが提案した設定を試してみましょう。私は戻ってきます。 –
期待どおりに動作します。複数の小さなファイルから1つのファイルのみを作成しました。 –
あなたはどの設定を実装しましたか? – Jared