gpt4 book ai didi

hadoop - 减少映射器和缩减器以在 Hive 中对非常大的表/ View 进行简单查询

转载 作者:可可西里 更新时间:2023-11-01 15:20:39 26 4
gpt4 key购买 nike

我们在大约 5 TB 的表/ View 上运行一个简单的查询。我们正在执行 ETL,最后通过添加分区将数据添加到核心表中。

但是由于我们正在处理的数据量很大,查询产生了 4000 多个映射器和 1000 多个缩减器。查询也运行了 40 多分钟。

如何提高/降低资源利用率?

查询:

insert overwrite table dss.prblm_mtrc partition (LOAD_DT) select *, '2019-01-02' as LOAD_DT from dss.v_prblm_mtrc_stg_etl

最佳答案

使用静态分区,如果目标表中已经有很多分区,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

如果你的源表有太多小文件,尽量减少它们,使用concatenate for orc files或使用 merge during loading source table

使用矢量化、调整映射器和缩减器并行度:https://stackoverflow.com/a/48487306/2700344

set hive.vectorized.execution.enabled = true;
set hive.vectorized.execution.reduce.enabled = true;

所有矢量化设置都是 here .

如果你的目标表包含很多已经加载的分区,尝试关闭统计自动收集,这个设置可能会加速加载:

set hive.stats.autogather=false;

此外,如果您的源表是 orc 并且拆分计算花费的时间太长,请尝试以下设置:

hive.exec.orc.split.strategy=BI;

有关 ORC 策略的更多信息:ORC split strategy

关于hadoop - 减少映射器和缩减器以在 Hive 中对非常大的表/ View 进行简单查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54097248/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com