1.hive并行執(zhí)行
set hive.exec.parallel=true;
set hive.exec.parallel.thread.number=8;
**2.增大hive memory--java heep space **
--mr
set mapreduce.map.memory.mb=10240;
set mapreduce.reduce.memory.mb=10240;
--tez
set hive.tez.container.size=20480;
set hive.tez.java.opts=-Xmx16384m;
3.mr讀取遞歸目錄設置
hive執(zhí)行引擎為mr時,默認不支持讀取遞歸目錄遭京,如要讀取遞歸目錄下的文件虱歪,則需要進行如下設置
set mapreduce.input.fileinputformat.input.dir.recursive=true;
set hive.mapred.supports.subdirectories=true;
4.顯示當前數(shù)據(jù)庫名稱
set hive.cli.print.current.db=true;
--顯示列名
set hive.cli.print.header=true;
5.map和reducer個數(shù)控制
---MR-map控制個數(shù):
set mapred.max.split.size=128000000 --128M新版本通過此參數(shù)控制map個數(shù)
set mapred.min.split.size.per.node=8000000;
set mapred.min.split.size.per.rack=8000000;
---設置tez的map大小
set tez.grouping.min-size = 128000000; --最小128M,合并map端小文件
set tez.grouping.max-size = 128000000; --最大128M,可增加處理Map數(shù)量
---reducer設置:
set hive.exec.reducers.bytes.per.reducer = 128000000;--設置reducer處理大小
set hive.exec.reducers.max = 999;--設置最大reducer個數(shù)
6.設置隊列名和作業(yè)名
set mapred/tez.job.queue.name=xxx;
set mapred.job.name=xxxx;
7.hive 列選擇
---hive中不選擇最后一列
set hive.support.quoted.identifiers=none;
SELECT `(inc_day)?+.+` FROM tbl_name limit 1;
8.日志信息中打印出統(tǒng)計信息
set hive.tez.exec.print.summary=true;
9.常用的數(shù)據(jù)傾斜設置
set hive.groupby.skewindata=true;
set hive.map.aggr = true;
set hive.groupby.mapaggr.checkinterval =100000;
set hive.optimize.skewjoin=true;
set hive.skewjoin.key=100000;
10.hive增加動態(tài)分區(qū)數(shù)量
set hive.exec.dynamic.partition.mode=nonstrict;
set hive.exec.max.dynamic.partitions=2000;
set hive.exec.max.dynamic.partitions.pernode=2000;
11.更新表的統(tǒng)計信息
ANALYZE TABLE xxxx PARTITION(inc_day='20181031') COMPUTE STATISTICS;
12.mapjoin
親測map join在大表join小表的時候十分有用净刮,小表的大表由參數(shù)hive.mapjoin.smalltable.filesize來決定,該參數(shù)表示小表的總大小硅则,默認值淹父,即25M。
Hive0.7之前怎虫,需要使用hint提示 /*+ mapjoin(table) */才會執(zhí)行MapJoin,否則執(zhí)行Common Join暑认,但在0.7版本之后,默認自動會轉(zhuǎn)換Map Join大审,由參數(shù)hive.auto.convert.join來控制蘸际,默認為true.
假設a表為一張大表,b為小表徒扶,并且hive.auto.convert.join=true,那么Hive在執(zhí)行時候會自動轉(zhuǎn)化為MapJoin粮彤。
set hive.auto.convert.join=true