1. SerDes and I/O
-
hive.input.format
默認(rèn) org.apache.hadoop.hive.ql.io.CombineHiveInputFormat
默認(rèn)的input format辑畦。如果 CombineHiveInputFormat 有問(wèn)題测砂,則使用 HiveInputFormat -
hive.default.fileformat
默認(rèn)值 TextFile
可選項(xiàng):TextFile征字,SequenceFile容握,RCfile返十,ORC财喳,Parquet
Parquet是在2.3.0之后才有的遭贸,其他都在1.0之前就有了 -
hive.query.result.fileformat
默認(rèn)值 TextFile(Hive2.0及以前),SequenceFile(Hive2.1及以上版本)
查詢中間結(jié)果的文件格式
2. index相關(guān)參數(shù)
2.1 常調(diào)整參數(shù)(需熟悉并且自己試驗(yàn)一下, OK)
-
hive.optimize.index.filter
默認(rèn)值: false
是否自動(dòng)使用索引 -
hive.optimize.index.groupby
默認(rèn)值:false
是否使用聚集索引優(yōu)化group-by查詢 -
hive.index.compact.binary.search
默認(rèn)值:true
在索引表中是否開(kāi)啟二分搜索進(jìn)行索引項(xiàng)查詢网沾,默認(rèn)是true -
hive.exec.concatenate.check.index
默認(rèn)值: true
這個(gè)參數(shù)設(shè)置為true, 當(dāng)使用 alter table ... concatenate on... 的時(shí)候,如果表有索引hive會(huì)報(bào)錯(cuò)癞蚕。可以幫助用戶避免index的刪除和重建 -
hive.optimize.index.autoupdate
默認(rèn)值:false
是否在索引過(guò)期時(shí)啟用自動(dòng)重建辉哥。 注意:重新構(gòu)建索引可能是一項(xiàng)耗時(shí)且計(jì)算昂貴的操作桦山;在許多情況下,最好是手動(dòng)重新構(gòu)建索引醋旦。
2.2 了解即可
-
hive.index.compact.file.ignore.hdfs
默認(rèn)值: false
這個(gè)參數(shù)設(shè)置為 true 的時(shí)候任務(wù)運(yùn)行時(shí)索引中存儲(chǔ)的HDFS地址將被忽略恒水,如果數(shù)據(jù)被刪除或者名字變化,索引依然還可以用 -
hive.optimize.index.filter.compact.minsize
默認(rèn)值:5368709120 (5g)
壓縮索引自動(dòng)應(yīng)用的最小輸入大小 -
hive.optimize.index.filter.compact.maxsize
默認(rèn)值:-1
壓縮索引自動(dòng)應(yīng)用的最大輸入大小饲齐,負(fù)值代表無(wú)窮大 -
hive.index.compact.query.max.size
默認(rèn)值:10737418240 (10G)
一個(gè)使用壓縮索引的查詢可以讀入的最大數(shù)據(jù)量钉凌,負(fù)值代表無(wú)窮大 -
hive.index.compact.query.max.entries
默認(rèn)值:10000000
使用壓縮索引查詢時(shí)能讀到的最大索引項(xiàng)數(shù),默認(rèn)是10000000;負(fù)值代表無(wú)窮大逝段;
3. orc文件格式相關(guān)參數(shù)
3.1 常調(diào)整參數(shù)(需熟悉并且自己試驗(yàn)一下,OK)
-
hive.orc.splits.include.file.footer
默認(rèn)值 false
這個(gè)值如果打開(kāi)风题,ORC文件中將包含stripes的元數(shù)據(jù)饮笛,這個(gè)數(shù)據(jù)遠(yuǎn)程讀取(從客戶端或者HiveServer2機(jī)器上)并且發(fā)送到所有的task -
hive.orc.cache.stripe.details.size
默認(rèn)值 10000
ORC文件的元數(shù)據(jù)信息在客戶端緩存時(shí)可緩存的大小 -
hive.orc.compute.splits.num.threads
默認(rèn)值 10
ORC并行創(chuàng)建 splits 時(shí)的最大線程 -
hive.exec.orc.split.strategy
默認(rèn)HYBRID咨察,可選: HYBRID, BI, ETL,從 HIVE 1.2.0 版本開(kāi)始出現(xiàn)福青。(環(huán)境為hive1.1.0, 試驗(yàn)不了)不是用戶級(jí)配置
(1) HYBRID: 當(dāng)文件的平均大小大于orc最大split值(默認(rèn)256M)時(shí)使用ETL策略摄狱,否則使用BI策略。
(2) BI: 這種策略不會(huì)花費(fèi)太多時(shí)間進(jìn)行切分orc文件无午,不會(huì)去讀orc的footer元數(shù)據(jù)媒役,以文件為單位進(jìn)行切片
(3) ETL: 這種策略會(huì)將文件進(jìn)行切分,多個(gè)stripe組成一個(gè)split -
hive.exec.orc.zerocopy
默認(rèn)值為 false
使用零拷貝讀取ORC宪迟。(這需要Hadoop 2.3或更高版本酣衷。公司環(huán)境hadoop是2.6的) -
hive.merge.orcfile.stripe.level
默認(rèn)值: true
當(dāng)參數(shù) hive.merge.mapfiles,hive.merge.mapredfiles 或者 hive.merge.tezfiles打開(kāi)時(shí)次泽,這個(gè)參數(shù)設(shè)置為 true的時(shí)候會(huì)從 stripe 層對(duì) ORC文件進(jìn)行快速合并穿仪。
3.2 不常調(diào)整參數(shù)
需知道
-
hive.exec.orc.default.stripe.size
默認(rèn)值: HIVE0.14之后改成了64*1024*1024
默認(rèn)的ORC stripe大小 -
hive.exec.orc.default.block.size
默認(rèn)值: 256*1024*1024
orc文件的默認(rèn)block大小 -
hive.exec.orc.default.row.index.stride
默認(rèn)值 10000
orc文件中行組的行數(shù) -
hive.exec.orc.default.block.padding
默認(rèn)值 true
默認(rèn)塊填充。(orc文件的stripe和HDFS的文件塊邊界應(yīng)該有填充) -
hive.exec.orc.block.padding.tolerance
默認(rèn)值:0.05
填充的時(shí)候能填充空間占o(jì)rc stripe大小的最大比例意荤,例如stripe默認(rèn)64M啊片,則填充空間最大達(dá)到3.2M,如果超過(guò)這個(gè)數(shù)會(huì)用一個(gè)新的較小的stripe填進(jìn)去玖像。 -
hive.exec.orc.default.compress
默認(rèn)值 ZLIB
orc文件默認(rèn)壓縮格式 -
hive.exec.orc.encoding.strategy
默認(rèn)值 SPEED
可選項(xiàng)為 SPEED 和 COMPRESSION紫谷,只會(huì)影響整數(shù)的輕量級(jí)壓縮,不會(huì)影響二級(jí)壓縮如ZLIB -
hive.exec.orc.compression.strategy
默認(rèn)值 SPEED
可選項(xiàng)為 SPEED 和 COMPRESSION捐寥,影響二級(jí)壓縮如ZLIB -
hive.orc.row.index.stride.dictionary.check
默認(rèn)值: true
這個(gè)參數(shù)設(shè)置為true的時(shí)候會(huì)進(jìn)行行組級(jí)別的check,否則會(huì)進(jìn)行stripe級(jí)別的check
了解即可
-
hive.exec.orc.memory.pool
默認(rèn)值 0.5
ORC文件寫入時(shí)可以使用的堆內(nèi)存的占比 -
hive.exec.orc.base.delta.ratio
默認(rèn)值 8
根據(jù) STRIPE_SIZE 和 BUFFER_SIZE 定義的基本寫入器和增量寫入器的比例笤昨。 -
hive.exec.orc.default.buffer.size
默認(rèn)值:256*1024
默認(rèn)ORC緩沖大小 -
hive.exec.orc.dictionary.key.size.threshold
默認(rèn)值 0.8 -
hive.orc.cache.use.soft.references
默認(rèn)值 false
緩存orc文件的footer所用的對(duì)象是hard refernce(強(qiáng)引用,不會(huì)被垃圾回收器回收)握恳。將這個(gè)參數(shù)設(shè)置為true可以防止內(nèi)存資源緊缺時(shí)候發(fā)生內(nèi)存溢出瞒窒,代價(jià)是可能會(huì)隱性查詢性能。 -
hive.exec.orc.skip.corrupt.data
默認(rèn)值:false
設(shè)置為false的時(shí)候碰到損壞的數(shù)據(jù)將拋出異常
4. Reducer相關(guān)參數(shù)
4.1 常調(diào)整參數(shù)(需熟悉并且自己試驗(yàn)一下乡洼,OK)
-
mapred.reduce.tasks
默認(rèn)值 -1根竿。
每一個(gè) job 默認(rèn)的 reduce task 的數(shù)量,通常設(shè)置為接近可用主機(jī)數(shù)量的素?cái)?shù)就珠,當(dāng)把參數(shù) mapred.job.tracker 設(shè)置為 local 的時(shí)候這個(gè)參數(shù)被忽略。Hadoop中這個(gè)參數(shù)默認(rèn)為1醒颖,但是hive通過(guò)將這個(gè)值默認(rèn)為 -1妻怎,自動(dòng)計(jì)算出 reduce task 的數(shù)量。 ---自動(dòng)計(jì)算的依據(jù)泞歉? -
hive.exec.reducers.bytes.per.reducer
Hive 0.14.0 之后默認(rèn)值為 256M逼侦,指的是每一個(gè)reducer的數(shù)據(jù)輸入量匿辩。 -
hive.exec.reducers.max
Hive 0.14.0 之后默認(rèn)值為 1009,指的是reducer數(shù)量的上限榛丢。
計(jì)算reducer的方式 N=min(hive.exec.reducers.max铲球,總輸入數(shù)據(jù)量/hive.exec.reducers.bytes.per.reducer)
5. Mapper相關(guān)參數(shù)
5.1 常調(diào)整參數(shù)(需熟悉并且自己試驗(yàn)一下, OK)
在 hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat下,切片大小由下面這些參數(shù)決定
計(jì)算公式 splitSize = Math.max(minSize, Math.min(maxSize, blockSize))
-
set dfs.block.size
默認(rèn)值134217728;
非用戶參數(shù)晰赞,默認(rèn) 128M稼病,HDFS文件塊的大小 -
set mapred.min.split.size
默認(rèn)值 1;
切片最小size -
set mapred.max.split.size
默認(rèn)值 134217728;
切片最大size -
hive.hadoop.supports.splittable.combineinputformat
默認(rèn)值 false;
輸入的小文件是否合并為一個(gè)Mapper,這樣能少起一些Mapper
在 hive.input.format=org.apache.hadoop.hive.ql.io.CombineHiveInputFormat下掖鱼,切片大小由下面這些參數(shù)決定
一般來(lái)說(shuō)這四個(gè)參數(shù)的配置結(jié)果大小要滿足如下關(guān)系: max.split.size >= min.split.size >= min.size.per.node >= min.size.per.rack
- set mapred.max.split.size=256000000; --- 調(diào)大的時(shí)候會(huì)減少M(fèi)apper數(shù)
- set mapred.min.split.size=10000000; --- 感覺(jué)沒(méi)啥效果
- set mapred.min.split.size.per.node=256000000; --每個(gè)節(jié)點(diǎn)處理的最小split然走。不能比 mapred.max.split.size,會(huì)報(bào)錯(cuò)
- set mapred.min.split.size.per.rack=256000000; --每個(gè)機(jī)架處理的最小slit戏挡。不能比 mapred.max.split.size芍瑞,會(huì)報(bào)錯(cuò)
試驗(yàn)效果:per.node 和 per.rack 進(jìn)行設(shè)置后,Mapper 數(shù)減少褐墅,運(yùn)行速度變快
6. 合并小文件
6.1 常調(diào)整參數(shù)(需熟悉并且自己試驗(yàn)一下, OK)
-
hive.hadoop.supports.splittable.combineinputformat
默認(rèn)值 false拆檬,Hive2.0.0 之后去除
是否合并小文件 -
hive.merge.mapfiles
默認(rèn)值:true
在只有map的作業(yè)結(jié)束時(shí)合并小文件 -
hive.merge.mapredfiles
默認(rèn)值:false
在一個(gè)map/reduce作業(yè)結(jié)束后合并小文件 -
hive.merge.size.per.task
默認(rèn)值:256000000
作業(yè)結(jié)束時(shí)合并文件的大小 -
hive.merge.smallfiles.avgsize
默認(rèn)值:16000000
在作業(yè)輸出文件小于該值時(shí),起一個(gè)額外的map/reduce作業(yè)將小文件合并為大文件妥凳,小文件的基本閾值竟贯,設(shè)置大點(diǎn)可以減少小文件個(gè)數(shù),需要mapfiles和mapredfiles為true
7. 聚合相關(guān)參數(shù)
7.1 常調(diào)整參數(shù)(需熟悉并且自己試驗(yàn)一下猾封,OK)
-
hive.map.aggr
Hive 0.2 起默認(rèn)值 false
在 group by 查詢中是否進(jìn)行 map端的預(yù)聚合 -
hive.groupby.mapaggr.checkinterval
默認(rèn)值:100000
聚合操作時(shí)澄耍,聚合條數(shù)超過(guò)這個(gè)值的時(shí)候會(huì)分拆。 -
hive.map.aggr.hash.min.reduction
默認(rèn)值:0.5
如果hash table的大小和輸入行數(shù)的比例大于這個(gè)值晌缘,則hash聚合會(huì)被關(guān)掉 -
hive.groupby.skewindata
默認(rèn)值false
數(shù)據(jù)是否有傾斜齐莲,優(yōu)化 group by 查詢 -
hive.optimize.groupby
默認(rèn)值:true
對(duì)分桶表(分區(qū))是否啟用桶group by
7.2 了解即可
-
hive.multigroupby.singlereducer
默認(rèn)值:true
多重插入時(shí)如果group by 的字段相同,只產(chǎn)生一個(gè) MR job -
hive.map.aggr.hash.force.flush.memory.threshold
默認(rèn)值:0.9
map端聚合hash表所用的最大內(nèi)存磷箕,當(dāng)內(nèi)存使用高于這個(gè)數(shù)的時(shí)候強(qiáng)制刷數(shù)據(jù)选酗。 -
hive.map.aggr.hash.percentmemory
默認(rèn)值:0.5
map端聚合操作的hash table占總內(nèi)存的比
8. join相關(guān)參數(shù)
8.1 常調(diào)整參數(shù)(需熟悉并且自己試驗(yàn)一下,OK)
-
hive.smalltable.filesize / hive.mapjoin.smalltable.filesize
默認(rèn)值:25000000
輸入表文件的mapjoin閾值,如果輸入文件的大小小于該值岳枷,則試圖將普通join轉(zhuǎn)化為mapjoin -
hive.auto.convert.join
默認(rèn)值:hive 0.11.0以上版本為 true
根據(jù)輸入文件的大小決定是否將普通join轉(zhuǎn)換為mapjoin的一種優(yōu)化 -
hive.auto.convert.join.noconditionaltask
默認(rèn)值:true
是否啟用基于輸入文件的大小芒填,將普通連接轉(zhuǎn)化為Map連接的優(yōu)化機(jī)制。假設(shè)參與連接的表(或分區(qū))有N個(gè)空繁,如果打開(kāi)這個(gè) 參數(shù)殿衰,并且有N-1個(gè)表(或分區(qū))的大小總和小于hive.auto.convert.join.noconditionaltask.size參數(shù)指定的值,那么會(huì)直接將連接轉(zhuǎn)為Map join盛泡。 -
hive.auto.convert.join.noconditionaltask.size
默認(rèn)值:10000000
如果hive.auto.convert.join.noconditionaltask是關(guān)閉的闷祥,則本參數(shù)不起作用。否則傲诵,如果參與連接的N個(gè)表(或分區(qū))中的N-1個(gè) 的總大小小于這個(gè)參數(shù)的值凯砍,則直接將連接轉(zhuǎn)為Map join箱硕。默認(rèn)值為10MB。 -
hive.optimize.skewjoin
默認(rèn)值:false
是否開(kāi)啟數(shù)據(jù)傾斜的join優(yōu)化 -
hive.skewjoin.key
默認(rèn)值:100000
判斷數(shù)據(jù)傾斜的閾值悟衩,如果在join中發(fā)現(xiàn)同樣的key超過(guò)該值則認(rèn)為是該key是傾斜的join key -
hive.skewjoin.mapjoin.map.tasks
默認(rèn)值:10000
在數(shù)據(jù)傾斜join時(shí)map join的map數(shù)控制 -
hive.skewjoin.mapjoin.min.split
默認(rèn)值:33554432
數(shù)據(jù)傾斜join時(shí)map join的map任務(wù)的最小split大小剧罩,默認(rèn)是33554432,該參數(shù)要結(jié)合上面的參數(shù)共同使用來(lái)進(jìn)行細(xì)粒度的控制座泳;
8.2 了解
-
hive.ppd.recognizetransivity
默認(rèn)值:true
等值join條件下是否傳遞重復(fù)的謂詞過(guò)濾器 -
hive.join.emit.interval
默認(rèn)值:1000
在發(fā)出join結(jié)果之前對(duì)join最右操作緩存多少行 -
hive.join.cache.size
默認(rèn)值:25000
在做表join時(shí)緩存在內(nèi)存中的行數(shù) -
hive.mapjoin.bucket.cache.size
默認(rèn)值:100
mapjoin時(shí)內(nèi)存cache的每個(gè)key要存儲(chǔ)多少個(gè)value -
hive.mapjoin.followby.map.aggr.hash.percentmemory
默認(rèn)值:0.3
map端聚合時(shí)hash表的內(nèi)存占比惠昔,該設(shè)置約束group by在map join后進(jìn)行,否則使用hive.map.aggr.hash.percentmemory來(lái)確認(rèn)內(nèi)存占比 -
hive.mapjoin.localtask.max.memory.usage
默認(rèn)值:0.90
mapjoin本地任務(wù)執(zhí)行時(shí)hash表容納key/value的最大量钳榨,超過(guò)這個(gè)值的話本地任務(wù)會(huì)自動(dòng)退出 -
hive.mapjoin.followby.gby.localtask.max.memory.usage
默認(rèn)值:0.55
類似上面舰罚,只不過(guò)是如果mapjoin后有一個(gè)group by的話,該配置控制類似這樣的query的本地內(nèi)存容量上限 -
hive.mapjoin.check.memory.rows
默認(rèn)值:100000
在運(yùn)算了多少行后執(zhí)行內(nèi)存使用量檢查 -
hive.ignore.mapjoin.hint
默認(rèn)值:true
是否忽略mapjoin標(biāo)記 -
hive.smbjoin.cache.rows
默認(rèn)值: 10000
每個(gè)sort-merge-bucket join表應(yīng)該在內(nèi)存中緩存多少個(gè)具有相同鍵值的行薛耻。 -
hive.mapjoin.optimized.hashtable
默認(rèn)值: true
在 MapJoin的時(shí)候是否使用內(nèi)存優(yōu)化的hash table营罢。只有在 tez 和 spark 引擎下起作用。因?yàn)閮?nèi)存優(yōu)化的hash table不能被序列化 -
hive.mapjoin.optimized.hashtable.wbsize
默認(rèn)值: 10485760 (10 * 1024 * 1024)
優(yōu)化后的hashtable使用一連串緩存來(lái)存儲(chǔ)數(shù)據(jù)饼齿,這是一個(gè)緩存的大小饲漾。 -
hive.hashtable.initialCapacity
默認(rèn)值: 100000
如果沒(méi)有統(tǒng)計(jì)數(shù)據(jù),mapjoin hashtable的初始容量 -
hive.hashtable.loadfactor
默認(rèn)值: 0.75
mapjoin過(guò)程中缕溉,使用hashtable保存key/value考传。這個(gè)參數(shù)是內(nèi)存中 hashtable 的 load factor。
9. 壓縮相關(guān)參數(shù)
9.1 須知道 (測(cè)試证鸥,OK)
-
hive.exec.compress.output
默認(rèn)值:false
控制hive的查詢結(jié)果輸出是否進(jìn)行壓縮僚楞,壓縮方式在hadoop的mapred.output.compress中配置 -
hive.exec.compress.intermediate
默認(rèn)值:false
控制hive的查詢中間結(jié)果是否進(jìn)行壓縮,默認(rèn)不壓縮false -
io.compression.codecs
設(shè)置了哪些壓縮算法
org.apache.hadoop.io.compress.DefaultCodec,org.apache.hadoop.io.compress.GzipCodec,org.apache.hadoop.io.compress.BZip2Codec,org.apache.hadoop.io.compress.DeflateCodec,org.apache.hadoop.io.compress.SnappyCodec,org.apache.hadoop.io.compress.Lz4Codec,com.hadoop.compression.lzo.LzopCodec -
mapreduce.output.fileoutputformat.compress
默認(rèn)值:false
mapreduce最終輸出數(shù)據(jù)是否壓縮 -
mapreduce.output.fileoutputformat.compress.codec
默認(rèn)值:org.apache.hadoop.io.compress.DefaultCodec
mapreduce最終輸出數(shù)據(jù)使用的壓縮算法 -
mapreduce.output.fileoutputformat.compress.type
默認(rèn)值:RECORD
mapreduce最終數(shù)據(jù)輸出壓縮方式枉层∪郑可選項(xiàng) RECORD(對(duì)每一條數(shù)據(jù)進(jìn)行壓縮),BLOCK(對(duì)一組數(shù)據(jù)進(jìn)行壓縮)鸟蜡,NONE -
mapreduce.map.output.compress
默認(rèn)值:true
map輸出是否壓縮 -
mapreduce.map.output.compress.codec
默認(rèn)值:org.apache.hadoop.io.compress.SnappyCodec
Map輸出階段壓縮算法
10. 其他參數(shù)
10.1 動(dòng)態(tài)分區(qū)相關(guān)(OK)
-
hive.exec.dynamic.partition
默認(rèn)值:false
是否允許動(dòng)態(tài)分區(qū) -
hive.exec.dynamic.partition.mode
默認(rèn)值:strict
在strict模式下膜赃,動(dòng)態(tài)分區(qū)的使用必須在一個(gè)靜態(tài)分區(qū)確認(rèn)的情況下,其他分區(qū)可以是動(dòng)態(tài)揉忘。nonstrict模式下所有分區(qū)都可以是動(dòng)態(tài)的 -
hive.exec.max.dynamic.partitions
默認(rèn)值:1000
動(dòng)態(tài)分區(qū)的上限 -
hive.exec.max.dynamic.partitions.pernode
默認(rèn)值:100
每個(gè)mapper/reducer節(jié)點(diǎn)可以創(chuàng)建的最大動(dòng)態(tài)分區(qū)數(shù) -
hive.exec.max.created.files
默認(rèn)值:100000
一個(gè)mapreduce作業(yè)能創(chuàng)建的HDFS文件最大數(shù)
10.1 須知道
-
hive.enforce.sorting
默認(rèn)值:hive2.x之前全為false,hive2.x移除這個(gè)參數(shù)跳座,強(qiáng)制為true
開(kāi)啟強(qiáng)制排序時(shí),插數(shù)據(jù)到表中會(huì)進(jìn)行強(qiáng)制排序 -
hive.enforce.bucketing
默認(rèn)值:hive2.x之前全為false,hive2.x移除這個(gè)參數(shù)泣矛,強(qiáng)制為true
數(shù)據(jù)分桶是否被強(qiáng)制執(zhí)行疲眷,默認(rèn)false,如果開(kāi)啟您朽,則寫入table數(shù)據(jù)時(shí)會(huì)啟動(dòng)分桶 -
hive.exec.parallel
默認(rèn)值:false
hive的執(zhí)行job是否并行執(zhí)行 -
hive.exec.parallel.thread.number
默認(rèn)值:8
最多有多少個(gè)作業(yè)可以并行執(zhí)行咪橙。 -
hive.mapred.mode
默認(rèn)值:hive 2.0 之前是 nonstrict,2.0之后為strict
如果是strict模式,很多有風(fēng)險(xiǎn)的查詢會(huì)被禁止運(yùn)行美侦,比如全表掃描、笛卡爾積等等 -
hive.debug.localtask
默認(rèn)值:false
是否調(diào)試本地任務(wù) -
hive.optimize.ppd
默認(rèn)值:true
是否啟用謂詞下推 -
hive.optimize.ppd.storage
默認(rèn)值:true
是否將為此下推推送到存儲(chǔ)處理中魂奥。如果hive.optimize.ppd置為false菠剩,這個(gè)參數(shù)忽略 -
hive.execution.engine
默認(rèn) mr,可選項(xiàng) mr耻煤、tez具壮、spark。
設(shè)置為 mr 的時(shí)候哈蝇,每執(zhí)行一個(gè)sql都會(huì)單獨(dú)開(kāi)一個(gè)application棺妓,執(zhí)行完就釋放資源。
設(shè)置為 spark 的時(shí)候炮赦,從開(kāi)始第一個(gè)sql開(kāi)始怜跑,只要沒(méi)有退出hive客戶端就不會(huì)另外開(kāi)啟一個(gè) application,所有任務(wù)都只用一個(gè)application吠勘,申請(qǐng)資源后重復(fù)利用性芬。 -
hive.mapred.reduce.tasks.speculative.execution
默認(rèn)值:true
reduce任務(wù)推測(cè)執(zhí)行是否開(kāi)啟 -
hive.limit.row.max.size
默認(rèn)值:100000
在使用limit做數(shù)據(jù)的子集查詢時(shí)保證的最小行數(shù)據(jù)量 -
hive.limit.optimize.limit.file
默認(rèn)值:10
使用簡(jiǎn)單limit查詢數(shù)據(jù)子集時(shí),可抽樣的最大文件數(shù) -
hive.limit.optimize.enable
默認(rèn)值:false
使用簡(jiǎn)單limit抽樣數(shù)據(jù)時(shí)是否開(kāi)啟優(yōu)化選項(xiàng) -
hive.limit.optimize.fetch.max
默認(rèn)值:50000
使用簡(jiǎn)單limit抽樣數(shù)據(jù)允許的最大行數(shù) -
hive.exec.mode.local.auto
默認(rèn)值:false
是否由hive決定自動(dòng)在local模式下運(yùn)行 -
hive.exec.mode.local.auto.inputbytes.max
默認(rèn)值:134217728
如果 hive.exec.mode.local.auto 為 true剧防,當(dāng)輸入文件大小小于此閾值時(shí)可以自動(dòng)在本地模式運(yùn)行 -
hive.exec.mode.local.auto.input.files.max
默認(rèn)值:4
map 任務(wù)數(shù)不超過(guò)這個(gè)數(shù)才能啟動(dòng)本地模式 -
hive.optimize.bucketingsorting
默認(rèn)值:true -
hive.optimize.reducededuplication.min.reducer
默認(rèn)值: 4 -
hive.optimize.correlation
默認(rèn)值:false -
hive.optimize.sort.dynamic.partition
默認(rèn)值:Hive 0.14.0 之后都置為false -
hive.cbo.enable
默認(rèn)值:Hive 1.1.0 之后都置為true -
hive.cbo.returnpath.hiveop
默認(rèn)值:false -
hive.optimize.null.scan
默認(rèn)值:true
10.2 了解
-
hive.exec.scratchdir
Hive 0.14.0 之后默認(rèn)值為 /tmp/hive植锉。
這個(gè)目錄用來(lái)存儲(chǔ)不同 map/reduce 階段的plans 和這些階段的中間輸出。 -
hive.scratch.dir.permission
默認(rèn)值:700
在scratch根目錄下開(kāi)辟的特定用戶目錄的權(quán)限峭拘。 -
hive.ppd.remove.duplicatefilters
默認(rèn)值:true
查詢優(yōu)化時(shí)俊庇,filters會(huì)被往下推。如果這個(gè)參數(shù)置為true鸡挠,則下推的filters會(huì)被保留在operator tree中辉饱,原始filter被刪除。如果false宵凌,則原始filter會(huì)被保留在operator tree的原始位置 -
hive.sample.seednumber
默認(rèn)值:0
用來(lái)區(qū)分抽樣的數(shù)字 -
hive.autogen.columnalias.prefix.label
默認(rèn)值:_c
當(dāng)在執(zhí)行中自動(dòng)產(chǎn)生列別名的前綴鞋囊,當(dāng)類似count這樣的聚合函數(shù)起作用時(shí),如果不明確指出count(a) as xxx的話瞎惫,那么默認(rèn)會(huì)從列的位置的數(shù)字開(kāi)始算起添加溜腐,比如第一個(gè)count的結(jié)果會(huì)冠以列名_c0,接下來(lái)依次類推 -
hive.autogen.columnalias.prefix.includefuncname
默認(rèn)值:false
在自動(dòng)生成列別名時(shí)是否帶函數(shù)的名字 -
hive.start.cleanup.scratchdir
默認(rèn)值:false
當(dāng)啟動(dòng)hive服務(wù)時(shí)是否清空hive的scratch目錄 -
hive.output.file.extension
默認(rèn)值:(empty)
輸出文件擴(kuò)展名 -
hive.insert.into.multilevel.dirs
默認(rèn)值:false
是否插入到多級(jí)目錄 -
hive.exec.script.maxerrsize
默認(rèn)值:100000
一個(gè)map/reduce任務(wù)允許打印到標(biāo)準(zhǔn)錯(cuò)誤里的最大字節(jié)數(shù)瓜喇,為了防止腳本把分區(qū)日志填滿 -
hive.exec.rowoffset
默認(rèn)值:false
是否提供 row offset 虛擬列 -
hive.exec.pre.hooks
默認(rèn)值:空
執(zhí)行前置條件挺益,一個(gè)用逗號(hào)分隔開(kāi)的實(shí)現(xiàn)了org.apache.hadoop.hive.ql.hooks.ExecuteWithHookContext接口的java class列表,配置了該配置后乘寒,每個(gè)hive任務(wù)執(zhí)行前都要執(zhí)行這個(gè)執(zhí)行前鉤子 -
hive.exec.post.hooks
默認(rèn)值:空
同上望众,執(zhí)行后鉤子 -
hive.exec.failure.hooks
默認(rèn)值:空
同上,異常時(shí)鉤子,在程序發(fā)生異常時(shí)執(zhí)行 -
hive.heartbeat.interval
默認(rèn)值:1000
發(fā)送心跳的時(shí)間間隔烂翰,在mapjoin和filter操作中使用 -
hive.udtf.auto.progress
默認(rèn)值: false
UDTF執(zhí)行時(shí)hive是否發(fā)送進(jìn)度信息到TaskTracker -
hive.exec.counters.pull.interval
默認(rèn)值:1000
運(yùn)行中job輪詢JobTracker的時(shí)間間隔夯缺,設(shè)置小會(huì)影響JobTracker的load,設(shè)置大可能看不出運(yùn)行任務(wù)的信息甘耿,要去平衡 -
hive.exec.drop.ignorenonexistent
默認(rèn)值:true
這個(gè)參數(shù)設(shè)置為true的情況下踊兜,如果表xxx不存在,drop table xxx會(huì)報(bào)錯(cuò) -
hive.exec.show.job.failure.debug.info
默認(rèn)值:true
在作業(yè)失敗時(shí)是否提供一個(gè)任務(wù)debug信息 -
hive.auto.progress.timeout
默認(rèn)值:0
運(yùn)行自動(dòng)progressor的時(shí)間間隔佳恬,設(shè)置為0等同于forever -
hive.table.parameters.default
默認(rèn)值:empty
新建表的屬性字段默認(rèn)值 -
hive.variable.substitute
默認(rèn)值:true
是否支持變量替換捏境,如果開(kāi)啟的話,支持語(yǔ)法如{system:var}和${env.var}
-
hive.error.on.empty.partition
默認(rèn)值:false
在遇到結(jié)果為空的動(dòng)態(tài)分區(qū)時(shí)是否報(bào)錯(cuò) -
hive.exec.default.partition.name
默認(rèn)值:HIVE_DEFAULT_PARTITION
當(dāng)動(dòng)態(tài)分區(qū)啟用時(shí)毁葱,如果數(shù)據(jù)列里包含null或者空字符串的話垫言,數(shù)據(jù)會(huì)被插入到這個(gè)分區(qū) -
hive.fetch.output.serde
默認(rèn)值:org.apache.hadoop.hive.serde2.DelimitedJSONSerDe
FetchTask序列化fetch輸出時(shí)需要的SerDe -
hive.optimize.reducededuplication
默認(rèn)值:true
如果數(shù)據(jù)已經(jīng)根據(jù)相同的key做好聚合,那么去除掉多余的map/reduce作業(yè) -
hive.new.job.grouping.set.cardinality
默認(rèn)值 30倾剿,多維統(tǒng)計(jì)的時(shí)候所用到的參數(shù) --- 了解一下 -
hive.optimize.skewjoin.compiletime
默認(rèn)值: false -
hive.optimize.union.remove
默認(rèn)值: false -
hive.mapred.supports.subdirectories
默認(rèn)值: false -
hive.auto.convert.join.use.nonstaged
默認(rèn)值: false -
hive.rework.mapredwork
默認(rèn)值:false -
hive.scratchdir.lock
默認(rèn)值:false -
hive.conf.validation
默認(rèn)值:true -
hive.fetch.task.conversion
默認(rèn)值:Hive 0.14.0之后置為 more -
hive.map.groupby.sorted
默認(rèn)值:hive2.0 之前false筷频,hive2.0開(kāi)始true -
hive.fetch.task.aggr
默認(rèn)值:false -
hive.execution.mode
默認(rèn) container,可選項(xiàng) container柱告,llap截驮。
hive 2.0 以上版本出現(xiàn) -
hive.mapred.local.mem
默認(rèn)值 0,Hive 2.0 版本開(kāi)始出現(xiàn)
local模式下际度,mapper和reducer的內(nèi)存 -
hive.optimize.countdistinct
默認(rèn)值:true葵袭,Hive 3.0 版本出現(xiàn)
是否將count distinct 分為2個(gè)階段執(zhí)行,第一階段根據(jù)distinct key使用多個(gè)reducer乖菱,第二階段使用一個(gè)reducer -
hive.optimize.remove.sq_count_check
默認(rèn)值:false坡锡,Hive 3.0 版本出現(xiàn) -
hive.merge.nway.joins
默認(rèn)值: true,hive2.2.0版本出現(xiàn)
多join并且join條件相同窒所,把join合并為一個(gè)join operator -
hive.optimize.limittranspose
默認(rèn)值:false鹉勒,hive2.0.0版本出現(xiàn) -
hive.optimize.limittranspose.reductionpercentage
默認(rèn)值:1.0,hive2.0.0版本出現(xiàn) -
hive.optimize.limittranspose.reductiontuples
默認(rèn)值:0吵取,hive2.0.0版本出現(xiàn) -
hive.optimize.filter.stats.reduction
默認(rèn)值:false禽额,hive2.1.0版本出現(xiàn) -
hive.cbo.cnf.maxnodes
默認(rèn)值:-1, hive2.1.1之后出現(xiàn) -
hive.groupby.position.alias
默認(rèn)值:false, hive2.2.0之后出現(xiàn) -
hive.orderby.position.alias
默認(rèn)值:true, hive2.2.0之后出現(xiàn) -
hive.io.sarg.cache.max.weight.mb
默認(rèn)值:10, Hive 2.2.1 出現(xiàn)