Hive參數(shù)詳解

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ǔ)法如{var}{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)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市皮官,隨后出現(xiàn)的幾起案子脯倒,更是在濱河造成了極大的恐慌,老刑警劉巖捺氢,帶你破解...
    沈念sama閱讀 222,464評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件藻丢,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡摄乒,警方通過(guò)查閱死者的電腦和手機(jī)悠反,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,033評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門残黑,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人斋否,你說(shuō)我怎么就攤上這事梨水。” “怎么了茵臭?”我有些...
    開(kāi)封第一講書(shū)人閱讀 169,078評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵冰木,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我笼恰,道長(zhǎng),這世上最難降的妖魔是什么歇终? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,979評(píng)論 1 299
  • 正文 為了忘掉前任社证,我火速辦了婚禮,結(jié)果婚禮上评凝,老公的妹妹穿的比我還像新娘追葡。我一直安慰自己,他們只是感情好奕短,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,001評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布宜肉。 她就那樣靜靜地躺著,像睡著了一般翎碑。 火紅的嫁衣襯著肌膚如雪谬返。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 52,584評(píng)論 1 312
  • 那天日杈,我揣著相機(jī)與錄音遣铝,去河邊找鬼。 笑死莉擒,一個(gè)胖子當(dāng)著我的面吹牛酿炸,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播涨冀,決...
    沈念sama閱讀 41,085評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼填硕,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了鹿鳖?” 一聲冷哼從身側(cè)響起扁眯,我...
    開(kāi)封第一講書(shū)人閱讀 40,023評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎栓辜,沒(méi)想到半個(gè)月后恋拍,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,555評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡藕甩,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,626評(píng)論 3 342
  • 正文 我和宋清朗相戀三年施敢,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了周荐。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,769評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡僵娃,死狀恐怖概作,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情默怨,我是刑警寧澤讯榕,帶...
    沈念sama閱讀 36,439評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站匙睹,受9級(jí)特大地震影響愚屁,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜痕檬,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,115評(píng)論 3 335
  • 文/蒙蒙 一霎槐、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧梦谜,春花似錦丘跌、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,601評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至荒澡,卻和暖如春报辱,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背仰猖。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,702評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工捏肢, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人饥侵。 一個(gè)月前我還...
    沈念sama閱讀 49,191評(píng)論 3 378
  • 正文 我出身青樓鸵赫,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親躏升。 傳聞我的和親對(duì)象是個(gè)殘疾皇子辩棒,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,781評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容

  • hive.ddl.output.format:hive的ddl語(yǔ)句的輸出格式,默認(rèn)是text膨疏,純文本一睁,還有json...
    博弈史密斯閱讀 1,954評(píng)論 0 6
  • 小文件問(wèn)題的影響1.從Hive的角度看,小文件會(huì)開(kāi)很多map佃却,一個(gè)map開(kāi)一個(gè)JVM去執(zhí)行者吁,所以這些任務(wù)的初始化,...
    JayWolf閱讀 1,696評(píng)論 0 0
  • 1.設(shè)置合理solt數(shù) mapred.tasktracker.map.tasks.maximum每個(gè)tasktra...
    liuzx32閱讀 2,315評(píng)論 0 0
  • 轉(zhuǎn)載請(qǐng)?jiān)谖恼缕鹗继幾⒚鞒鎏幩撬Вx謝复凳。 常用以下幾條命令: 很多情況下limit需要執(zhí)行整個(gè)查詢語(yǔ)句瘤泪,然后返回部分結(jié)果...
    xxlee閱讀 258評(píng)論 0 0
  • Hive調(diào)優(yōu)策略 Hive作為大數(shù)據(jù)領(lǐng)域常用的數(shù)據(jù)倉(cāng)庫(kù)組件,在設(shè)計(jì)和開(kāi)發(fā)階段需要注意效率育八。 影響Hive效率的不僅...
    奮斗的蛐蛐閱讀 1,260評(píng)論 0 4