私が使用しているワークスペースは、Hive 1.1.0およびCDH 5.5.4で設定されています。私は22パーティションの結果をもたらすクエリを作成します。このパーティションのディレクトリに保存されるファイルは、常に一意であり、20MBから700MBの範囲で変更できます。Hiveを使用してHDFSでファイルサイズを調べる方法
私が理解したところ、これはクエリのプロセスで使用される減速材の数に関連しています。
set mapreduce.job.reduces=5;
このシステムは、使用5は、ステージ1での作業を減らすようになりますが、自動的に1つの減速機に切り替わります:Let'sは、私が代わりに1のパーティションごとに5つのファイルを持つようにしたいと仮定し、私は、このコマンドを使用しますステージ2(コンパイル時に自動的に決定)。私が読んだところでは、これは、コンパイラーがリデューサーの数を選択するときの構成よりも重要性が高いためです。いくつかのタスクはパラレル化できないようで、1つのプロセスまたは減速タスクでしか実行できないように見えるので、システムは自動的にそれを決定します。
コード:
insert into table core.pae_ind1 partition (project,ut,year,month)
select ts,date_time, if(
-- m1
code_ac_dcu_m1_d1=0
and (min(case when code_ac_dcu_m1_d1=1 then ts end) over (partition by ut
order by ts rows between 1 following and 1000 following)-ts) <= 15,
min(case when code_ac_dcu_m1_d1=1 then ts end) over (partition by ut order
by ts rows between 1 following and 1000 following)-ts,NULL) as
t_open_dcu_m1_d1,
if(code_ac_dcu_m1_d1=2
and (min(case when code_ac_dcu_m1_d1=3 then ts end) over (partition by ut
order by ts rows between 1 following and 1000 following)-ts) <= 15,
min(case when code_ac_dcu_m1_d1=3 then ts end) over (partition by ut order
by ts rows between 1 following and 1000 following)-ts, NULL) as
t_close_dcu_m1_d1,
project,ut,year,month
from core.pae_open_close
where ut='902'
order by ut,ts
これは最後に巨大なファイルを持つことにつながります。私は、この結果ファイルを小さなものに分割する方法があるかどうかを知りたいと思っています。
のようになります。 'order by ut、ts'? –