Hive 任务调优实践总结

简介: Hive 任务调优实践总结

一、背景:

最近由于要回刷数据

调优前:

map数:30000 单个map 运行7-8分钟

reduce数:50  单个reduce 运行了20h 还没完成,还经常失败

整体耗时20多个小时还没有完成并且失败了,明显数据倾斜reduce 某个节点跑很久出不来

调优后:

map数:30000  单个map 运行7-8分钟

reduce数:1000   单个reduce 运行了1h左右

原始sql

set mapreduce.input.fileinputformat.split.minsize=4096000000;
set mapreduce.input.fileinputformat.split.maxsize=4096000000;
set mapred.reduce.tasks=1000;    
set hive.exec.reducers.max=1000;
SELECT user_id, county FROM
(
SELECT u as user_id, 
  bi_warehouse_dwd.ip_parse(ip).gb_id as county, 
    row_number() over(partition by u order by dm desc) as rank
FROM udw.tmp_play
WHERE
  dt >= '2022-03-14'
    and bi_warehouse_dwd.ip_parse(ip).gb_id is not null
) a
WHERE rank = 1

优化后sql

set mapreduce.input.fileinputformat.split.minsize=16384000000;
set mapreduce.input.fileinputformat.split.maxsize=16384000000;
set mapred.reduce.tasks=1000;    
set hive.exec.reducers.max=1000;
set mapreduce.reduce.shuffle.memory.limit.percent=0.1;
set mapreduce.reduce.shuffle.input.buffer.percent=0.2;
select a.u,a.county
from (SELECT u, 
  dm,
    bi_warehouse_dwd.ip_parse(ip).gb_id as county
FROM udw.tmp_play
WHERE 
    dt >= '2022-03-14'
  and bi_warehouse_dwd.ip_parse(ip).gb_id is not null) a
  join (
SELECT u, 
    max(dm) as dm
FROM udw.tmp_play
WHERE 
    dt >= '2022-03-14' group by u) b on a.u=b.u and a.dm=b.dm;

参考:

大数据调优经验_

相关文章
|
6月前
|
SQL HIVE
71 Azkaban HIVE脚本任务
71 Azkaban HIVE脚本任务
25 0
|
14天前
|
SQL 分布式计算 数据处理
【Hive】所有的Hive任务都会有MapReduce的执行吗?
【4月更文挑战第17天】【Hive】所有的Hive任务都会有MapReduce的执行吗?
|
9月前
|
SQL 存储 JSON
Hive学习---7、企业级调优(二)
Hive学习---7、企业级调优(二)
|
9月前
|
SQL 缓存 JSON
Hive学习---7、企业级调优(一)
Hive学习---7、企业级调优(一)
|
SQL 存储 负载均衡
工作常用之Hive 调优【四】HQL 语法优化
列裁剪就是在查询时只读取需要的列,分区裁剪就是只读取需要的分区。当列很多或者数据量很大时,如果 select * 或者不指定分区,全列扫描和全表扫描效率都很低。
174 0
工作常用之Hive 调优【四】HQL 语法优化
|
存储 SQL 分布式计算
工作常用之Hive 调优【三】 Explain 查看执行计划及建表优化
在查询时通过 WHERE 子句中的表达式选择查询所需要的指定的分区,这样的查询效率会提高很多,所以我们需要把常常用在 WHERE 语句中的字段指定为表的分区字段。
288 0
工作常用之Hive 调优【三】 Explain 查看执行计划及建表优化
|
SQL 存储 数据挖掘
HIVE 表 DLL 基本操作(一)——第2关:Create/Drop/Truncate 表任务描述
HIVE 表 DLL 基本操作(一)——第2关:Create/Drop/Truncate 表任务描述
284 0
|
SQL 分布式计算 负载均衡
如何从语法与参数层面对Hive进行调优
作为企业Hadoop应用的核心产品,Hive承载着FaceBook、淘宝等大佬95%以上的离线统计,很多企业里的离线统计甚至全由Hive完成,如电商、金融等行业。Hive在企业云计算平台发挥的作用和影响愈来愈大。因此,如何优化提速已经显得至关重要。
|
SQL 缓存 负载均衡
|
SQL 缓存 负载均衡
Hive调优
Hive调优
169 0