私の入力は、1日の終わりまでにマージしたい小さなORCファイルが多数あり、100MBブロックに分割したいと思います。Hive Merge小さなORCファイル
私の入力と出力の両方S3と環境を使用していますが、EMRで、設定しています
ハイブパラメータ、
set hive.msck.path.validation=ignore;
set hive.exec.reducers.bytes.per.reducer=256000000;
SET hive.exec.dynamic.partition = true;
SET hive.exec.dynamic.partition.mode = nonstrict;
SET hive.mapred.mode = nonstrict;
set hive.merge.mapredfiles=true;
set hive.merge.mapfile=true ;
set hive.exec.parallel = true;
set hive.exec.parallel.thread.number = 8;
SET hive.exec.stagingdir=/tmp/hive/ ;
SET hive.exec.scratchdir=/tmp/hive/ ;
set mapred.max.split.size=68157440;
set mapred.min.split.size=68157440;
set hive.merge.smallfiles.avgsize=104857600;
set hive.merge.size.per.task=104857600;
set mapred.reduce.tasks=10;
私のINSERT文:
insert into table dev.orc_convert_zzz_18 partition(event_type) select * from dev.events_part_input_18 where event_type = 'ScreenLoad' distribute by event_type;
さて問題は、あります私は合計で約500MBのサイズの80個の入力ファイルを持っています。この挿入文の後に、私はS3の4つのファイルを期待していましたが、これらのファイルはすべて1つのファイル必要な出力はありません。
は誰か、間違っている何が起こっているのか、私は知っている
'mapred'のプロパティは、すべての –
@ cricket_007はOKああ、おかげで確認します推奨されていません。私はちょうど答えを見つけました。クラスタリングを使用してパーティションをさらに複数の部分に分割できます。私のスパークの出力には小さなファイルがたくさんあり、Prestoを介してエンドユーザーにそれらの小さなファイルを公開すると、それらの小さなファイルをクエリするのが遅くなるため、ハイブをここで探検しています。https://community.hortonworks.com/content/supportkb/49637 /hive-bucketing-and-partitioning.html –
小さなファイルの問題を解決するためにSparkで 'coalesce'または' repartition'を使うべきです –