使用静态分区,如果目标表中已经有很多分区,Hive 会在最终加载之前更快地扫描它们,另见:HIVE Dynamic Partitioning Tips
insert overwrite table dss.prblm_mtrc partition (LOAD_DT='2019-01-02') select * from dss.v_prblm_mtrc_stg_etl
如果您的源表有太多小文件,请尝试减少它们,对 orc 文件使用 concatenate或在加载源表时使用合并
使用矢量化、调整映射器和缩减器并行性:https ://stackoverflow.com/a/48487306/2700344
set hive.vectorized.execution.enabled = true;
set hive.vectorized.execution.reduce.enabled = true;
所有矢量化设置都在这里。
如果您的目标表包含许多已加载的分区,请尝试关闭自动收集统计信息,此设置可能会加快加载速度:
set hive.stats.autogather=false;
此外,如果您的源表是 orc 并且拆分计算需要很长时间,请尝试以下设置:
hive.exec.orc.split.strategy=BI;
更多关于 ORC 策略:ORC 拆分策略