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
在索引表中是否開啟二分搜索進(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è)值如果打開,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 版本開始出現(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打開時(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è),如果打開這個(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
是否開啟數(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
開啟強(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,如果開啟,則寫入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ú)開一個(gè)application,執(zhí)行完就釋放資源。
設(shè)置為 spark 的時(shí)候,從開始第一個(gè)sql開始,只要沒(méi)有退出hive客戶端就不會(huì)另外開啟一個(gè) application,所有任務(wù)都只用一個(gè)application,申請(qǐng)資源后重復(fù)利用。 -
hive.mapred.reduce.tasks.speculative.execution
默認(rèn)值:true
reduce任務(wù)推測(cè)執(zhí)行是否開啟 -
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í)是否開啟優(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根目錄下開辟的特定用戶目錄的權(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ù)字開始算起添加,比如第一個(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)分隔開的實(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
是否支持變量替換,如果開啟的話,支持語(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開始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 版本開始出現(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)