2016-03-24 13 views
4

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

答えて

1

それはパーティションを指定するときに圧縮を使用するときに、動的パーティショニングに見えるか、パーティショニングを捨てとマッパーと減速の数に注力することをお勧めしますので、あなたはまだ3つのファイルを取得していることは興味深いですあなたの仕事によって作られています。あなたのファイルが小さい場合は、ターゲット上の1つのファイルにすべてのファイルをどのように保存するかを確認できますが、圧縮の必要性についても質問します。

ターゲットで作成されるファイルの数は、リデューサまたはマッパーの数に直接関係します。作成するSQLを減らす必要がある場合、作成されるファイルの数は、ジョブで使用される縮小機の数と同じになります。これは、ジョブで使用される減速機の数を設定することで制御できます。そこにあなたの例のSQLで

set mapred.reduce.tasks = 1; 

はほとんど使用されるすべての減速ではないでしょう、そうターゲット内のファイルの数は、ソース内のファイルの数に等しい使用マッパーの数に等しいです。マップ専用ジョブで出力ファイルの数を制御するのは簡単ではありませんが、試すことができるいくつかの構成設定があります。

小さい入力ファイルを結合して、生成されるマッパーの数が少なくなるように設定すると、デフォルトはfalseになります。

set hive.hadoop.supports.splittable.combineinputformat = true; 

このしきい値の下で何かが出力ファイルの数に影響を与える可能性がある加入マップに変換されるようにしようと、入力ファイルのバイト単位でのしきい値を設定してみてください。私は圧縮の種類を変えて遊ぶでしょう圧縮については

set hive.mapjoin.smalltable.filesize = 25000000; 

はそれがあなたの出力の違いを作るかどうかを確認するためにだけ使用されています。

set hive.exec.orc.default.compress = gzip, snappy, etc... 
+0

#Salmonerdは、あなたがそのマップだけの仕事は、私は基本的にハイブパーティションに上書きされ、インサート使用して大きなファイルに組み合わせることにより、小さなファイルの問題に対処しようとしていますので、何の減速が実行されていないがある言ったように。あなたが提案した設定を試してみましょう。私は戻ってきます。 –

+0

期待どおりに動作します。複数の小さなファイルから1つのファイルのみを作成しました。 –

+0

あなたはどの設定を実装しましたか? – Jared

関連する問題