Hive任务如何计算生成的map和reduce任务
在使用hive时候,需要关注hive任务所消耗的资源,否则可能会出现hive任务过于低效,或者把所查询的数据源拉胯的情况
1.查看当前hive所使用的引擎和配置
使用set语句可以查看当前hive的配置
set;
查看hive当前使用的engine
set hive.execution.engine;
查看hive.input.format和mapreduce.input.fileinputformat.split.maxsize
hive.input.format=org.apache.hadoop.hive.ql.io.CombineHiveInputFormat mapreduce.input.fileinputformat.split.maxsize=256000000
2.explain当前的SQL语句
explain INSERT OVERWRITE TABLE xx.xx PARTITION (pdate='2022-10-11') select * from xx.xx where pdate ="2022-10-10";
对于input format是HDFS或者s3的hive表,explain的时候可以看到在stage-1读取文件的时候,输入表的行数和数据大小
3.调整map和reduce任务数量
首先查看SQL运行时候的日志,确定map和reduce task的数量
INFO : Hadoop job information for Stage-1: number of mappers: 1727; number of reducers: 0
1.如果input format是HDFS或者s3的hive表
可以参考文档:【Hive任务优化】—— Map、Reduce数量调整
2.如果hive查询的是其他的数据源
比如使用了mongo serde来查询mongo,那么则需要去找到该serde里面和split相关的参数,比如mongo.input.split_size
https://github.com/mongodb/mongo-hadoop/blob/r2.0.2/core/src/main/java/com/mongodb/hadoop/util/MongoConfigUtil.java#L155
本文只发表于博客园和tonglin0325的博客,作者:tonglin0325,转载请注明原文链接:https://www.cnblogs.com/tonglin0325/p/6238915.html