Hive碎碎念(4):參數(shù)配置大全


轉(zhuǎn)載請在文章起始處注明出處,謝謝。


常用以下幾條命令:

set hive.input.format = org.apache.hadoop.hive.ql.io.CombineHiveInputFormat;
set hive.hadoop.supports.splittable.combineinputformat = true;
set mapreduce.input.fileinputformat.split.maxsize = 256000000;
set mapreduce.input.fileinputformat.split.minsize.per.node = 128000000;
set mapreduce.input.fileinputformat.split.minsize.per.rack = 128000000;
set hive.merge.mapfiles = true;  --合并map輸出
set hive.merge.mapredfiles = true;  --合并reduce輸出
set hive.merge.size.per.task = 256000000;
set hive.merge.smallfiles.avgsize = 256000000;
set hive.exec.parallel = true;  --并發(fā)

很多情況下limit需要執(zhí)行整個查詢語句,然后返回部分結(jié)果。為了避免這種情況,需要開啟下面配置屬性,對源數(shù)據(jù)進行抽樣。這樣做的缺點是有可能有些有用的數(shù)據(jù)永遠(yuǎn)取不到:

set hive.limit.optimize.enable = true;
set hive.limit.row.max.size = 1000000;  
set hive.limit.optimize.limit.file = 10;  --最大文件數(shù)

Hive參數(shù)配置大全:

hive.exec.mode.local.auto
決定 Hive 是否應(yīng)該自動地根據(jù)輸入文件大小,在本地運行(在GateWay運行)
默認(rèn)值:true

hive.exec.mode.local.auto.inputbytes.max
如果hive.exec.mode.local.auto 為 true,當(dāng)輸入文件大小小于此閾值時可以自動在本地模式運行,默認(rèn)是 128兆。
默認(rèn)值:134217728L

hive.exec.mode.local.auto.tasks.max
如果hive.exec.mode.local.auto 為 true,當(dāng) Hive Tasks(Hadoop Jobs)小于此閾值時,可以自動在本地模式運行。
默認(rèn)值:4

hive.auto.convert.join
是否根據(jù)輸入小表的大小,自動將 Reduce 端的 Common Join 轉(zhuǎn)化為 Map Join,從而加快大表關(guān)聯(lián)小表的 Join 速度。
默認(rèn)值:false

hive.mapred.local.mem
Mapper/Reducer在本地模式的最大內(nèi)存量,以字節(jié)為單位,0為不限制。
默認(rèn)值:0
mapred.reduce.tasks
所提交 Job 的 reduer 的個數(shù),使用 Hadoop Client 的配置。
默認(rèn)值:1

hive.exec.scratchdir
HDFS路徑,用于存儲不同 map/reduce 階段的執(zhí)行計劃和這些階段的中間輸出結(jié)果。
默認(rèn)值:/tmp/<user.name>/hive

hive.metastore.warehouse.dir
Hive 默認(rèn)的數(shù)據(jù)文件存儲路徑,通常為 HDFS 可寫的路徑。
默認(rèn)值:"

hive.groupby.skewindata
決定 group by 操作是否支持傾斜的數(shù)據(jù)。
默認(rèn)值:false

hive.merge.mapfiles
是否開啟合并 Map 端小文件,對于 Hadoop 0.20 以前的版本,起一首新的 Map/Reduce Job,對于 0.20 以后的版本,則是起使用 CombineInputFormat 的 MapOnly Job。
默認(rèn)值:true

hive.merge.mapredfiles
是否開啟合并 Map/Reduce 小文件,對于 Hadoop 0.20 以前的版本,起一首新的 Map/Reduce Job,對于 0.20 以后的版本,則是起使用 CombineInputFormat 的 MapOnly Job。
默認(rèn)值:false

hive.default.fileformat
Hive 默認(rèn)的輸出文件格式,與創(chuàng)建表時所指定的相同,
可選項為 'TextFile' 、 'SequenceFile' 或者 'RCFile'。 'TextFile'

hive.mapred.mode
Map/Redure 模式,如果設(shè)置為 strict,將不允許笛卡爾積。
默認(rèn)值: 'nonstrict'

hive.exec.parallel
是否開啟 map/reduce job的并發(fā)提交。
默認(rèn)值: false

hive.security.authorization.enabled
Hive 是否開啟權(quán)限認(rèn)證。
默認(rèn)值:false

hive.exec.plan
Hive 執(zhí)行計劃的路徑,會在程序中自動進行設(shè)置
默認(rèn)值:null

hive.exec.submitviachild
決定 map/reduce Job 是否應(yīng)該使用各自獨立的 JVM 進行提交(Child進程),默認(rèn)情況下,使用與 HQL compiler 相同的 JVM 進行提交。
默認(rèn)值:false

hive.exec.script.maxerrsize
通過 TRANSFROM/MAP/REDUCE 所執(zhí)行的用戶腳本所允許的最大的序列化錯誤數(shù)。
默認(rèn)值:100000

hive.exec.script.allow.partial.consumption
是否允許腳本只處理部分?jǐn)?shù)據(jù),如果設(shè)置為 true ,因 broken pipe 等造成的數(shù)據(jù)未處理完成將視為正常。
默認(rèn)值:false

hive.exec.compress.output
決定查詢中最后一個 map/reduce job 的輸出是否為壓縮格式。
默認(rèn)值:false

hive.exec.compress.intermediate
決定查詢的中間 map/reduce job (中間 stage)的輸出是否為壓縮格式。
默認(rèn)值:false

hive.intermediate.compression.codec
中間 map/reduce job 的壓縮編解碼器的類名(一個壓縮編解碼器可能包含多種壓縮類型),該值可能在程序中被自動設(shè)置。

hive.intermediate.compression.type
中間 map/reduce job 的壓縮類型,如 "BLOCK""RECORD"。

hive.exec.reducers.bytes.per.reducer
每一個 reducer 的平均負(fù)載字節(jié)數(shù)。
默認(rèn)值:1000000000

hive.exec.reducers.max
reducer 個數(shù)的上限。
默認(rèn)值:999

hive.exec.pre.hooks
語句層面,整條 HQL 語句在執(zhí)行前的 hook 類名。
默認(rèn)值:"

hive.exec.post.hooks
語句層面,整條 HQL 語句在執(zhí)行完成后的 hook 類名。

hive.exec.parallel.thread.number
并發(fā)提交時的并發(fā)線程的個數(shù)。
默認(rèn)值:8

hive.mapred.reduce.tasks.speculative.execution
是否開啟 reducer 的推測執(zhí)行,與mapred.reduce.tasks.speculative.execution 作用相同。
默認(rèn)值:false

hive.exec.counters.pull.interval
客戶端拉取 progress counters 的時間,以毫秒為單位。
默認(rèn)值:1000L

hive.exec.dynamic.partition
是否打開動態(tài)分區(qū)。
默認(rèn)值:false

hive.exec.dynamic.partition.mode
打開動態(tài)分區(qū)后,動態(tài)分區(qū)的模式,有 strict 和 nonstrict 兩個值可選,strict 要求至少包含一個靜態(tài)分區(qū)列,nonstrict 則無此要求。
默認(rèn)值:strict

hive.exec.max.dynamic.partitions
所允許的最大的動態(tài)分區(qū)的個數(shù)。
默認(rèn)值:1000

hive.exec.max.dynamic.partitions.pernode
單個 reduce 結(jié)點所允許的最大的動態(tài)分區(qū)的個數(shù)。
默認(rèn)值:100

hive.exec.default.partition.name
默認(rèn)的動態(tài)分區(qū)的名稱,當(dāng)動態(tài)分區(qū)列為''或者null時,使用此名稱。'' 'HIVE_DEFAULT_PARTITION'

hadoop.bin.path
HadoopClient 可執(zhí)行腳本的路徑,該路徑用于通過單獨的 JVM 提交 job,使用 Hadoop Client 的配置。
默認(rèn)值:$HADOOP_HOME/bin/hadoop

hadoop.config.dir
HadoopClient 配置文件的路徑,使用 HadoopClient 的配置。
默認(rèn)值:$HADOOP_HOME/conf

fs.default.name
Namenode 的 URL,使用 Hadoop Client 的配置。
默認(rèn)值:file:///

map.input.file
Map 的輸入文件,使用 Hadoop Client 的配置。
默認(rèn)值:null

mapred.input.dir
Map 的輸入目錄,使用 Hadoop Client 的配置。
默認(rèn)值: null

mapred.input.dir.recursive
輸入目錄是否可遞歸嵌套,使用 HadoopClient 的配置。
默認(rèn)值:false

mapred.job.tracker
Job Tracker的 URL,使用 Hadoop Client 的配置,如果這個配置設(shè)置為 'local',將使用本地模式。
默認(rèn)值:local

mapred.job.name
Map/Reduce 的 job 名稱,如果沒有設(shè)置,則使用生成的 job name,使用 Hadoop Client 的配置。
默認(rèn)值:null

mapred.reduce.tasks.speculative.execution
Map/Reduce 推測執(zhí)行,使用 Hadoop Client 的配置。
默認(rèn)值:null

hive.metastore.metadb.dir
Hive 元數(shù)據(jù)庫所在路徑。
默認(rèn)值:"

hive.metastore.uris
Hive 元數(shù)據(jù)的 URI,多個 thrift://地址,以英文逗號分隔。
默認(rèn)值:"

hive.metastore.connect.retries
連接到 Thrift 元數(shù)據(jù)服務(wù)的最大重試次數(shù)。
默認(rèn)值:3

javax.jdo.option.ConnectionPassword
JDO 的連接密碼。
默認(rèn)值:"

hive.metastore.ds.connection.url.hook
JDO 連接 URL Hook 的類名,該 Hook 用于獲得 JDO 元數(shù)據(jù)庫的連接字符串,為實現(xiàn)了JDOConnectionURLHook 接口的類。
默認(rèn)值:"

javax.jdo.option.ConnectionURL
元數(shù)據(jù)庫的連接 URL。
默認(rèn)值:"

hive.metastore.ds.retry.attempts
當(dāng)沒有 JDO 數(shù)據(jù)連接錯誤后,嘗試連接后臺數(shù)據(jù)存儲的最大次數(shù)。
默認(rèn)值:1

hive.metastore.ds.retry.interval
每次嘗試連接后臺數(shù)據(jù)存儲的時間間隔,以毫秒為單位。
默認(rèn)值:1000

hive.metastore.force.reload.conf
是否強制重新加載元數(shù)據(jù)配置,一但重新加載,該值就會被重置為 false。
默認(rèn)值:false

hive.metastore.server.min.threads
Thrift 服務(wù)線程池的最小線程數(shù)。
默認(rèn)值:8

hive.metastore.server.max.threads
Thrift 服務(wù)線程池的最大線程數(shù)。
默認(rèn)值:0x7fffffff

hive.metastore.server.tcp.keepalive
Thrift 服務(wù)是否保持 TCP 連接。
默認(rèn)值:true

hive.metastore.archive.intermediate.original
用于歸檔壓縮的原始中間目錄的后綴,這些目錄是什么并不重要,只要能夠避免沖突即可。
默認(rèn)值:'_INTERMEDIATE_ORIGINAL'

hive.metastore.archive.intermediate.archived
用于歸檔壓縮的壓縮后的中間目錄的后綴,這些目錄是什么并不重要,只要能夠避免沖突即可。
默認(rèn)值:'_INTERMEDIATE_ARCHIVED'

hive.metastore.archive.intermediate.extracted
用于歸檔壓縮的解壓后的中間目錄的后綴,這些目錄是什么并不重要,只要能夠避免沖突即可。
默認(rèn)值:'_INTERMEDIATE_EXTRACTED'

hive.cli.errors.ignore
是否忽略錯誤,對于包含多的 SQL 文件,可以忽略錯誤的行,繼續(xù)執(zhí)行下一行。
默認(rèn)值:false

hive.session.id
當(dāng)前會話的標(biāo)識符,格式為“用戶名_時間”用于記錄在 job conf 中,一般不予以手動設(shè)置。
默認(rèn)值:"

hive.session.silent
當(dāng)前會話是否在 silent 模式運行。 如果不是 silent 模式,所以 info 級打在日志中的消息,都將以標(biāo)準(zhǔn)錯誤流的形式輸出到控制臺。
默認(rèn)值:false

hive.query.string
當(dāng)前正在被執(zhí)行的查詢字符串。
默認(rèn)值:"

hive.query.id
當(dāng)前正在被執(zhí)行的查詢的ID。
默認(rèn)值: "

hive.query.planid
當(dāng)前正在被執(zhí)行的 map/reduce plan 的 ID。
默認(rèn)值: "

hive.jobname.length
當(dāng)前 job name 的最大長度,hive 會根據(jù)此長度省略 job name 的中間部分。
默認(rèn)值:50

hive.jar.path
通過單獨的 JVM 提交 job 時,hive_cli.jar 所在的路徑
默認(rèn)值:"

hive.aux.jars.path
各種由用戶自定義 UDF 和 SerDe 構(gòu)成的插件 jar 包所在的路徑。
默認(rèn)值:"

hive.added.files.path
ADD FILE 所增加的文件的路徑。
默認(rèn)值:"

hive.added.jars.path
ADD JAR 所增加的文件的路徑。
默認(rèn)值: "

hive.added.archives.path
ADDARCHIEVE 所增加的文件的路徑。
默認(rèn)值:"

hive.table.name
當(dāng)前的 Hive 表的名稱,該配置將通過 ScirptOperator 傳入到用戶腳本中。
默認(rèn)值:"

hive.partition.name
當(dāng)前的 Hive 分區(qū)的名稱,該配置將通過 ScriptOperator 傳入到用戶腳本中。
默認(rèn)值:"

hive.script.auto.progress
腳本是否周期性地向 Job Tracker 發(fā)送心跳,以避免腳本執(zhí)行的時間過長,使 JobTracker 認(rèn)為腳本已經(jīng)掛掉了。
默認(rèn)值:false

hive.script.operator.id.env.var
用于識別 ScriptOperator ID 的環(huán)境變量的名稱。
默認(rèn)值:'HIVE_SCRIPT_OPERATOR_ID'

hive.alias
當(dāng)前的 Hive 別名,該配置將通過 ScriptOpertaor 傳入到用戶腳本中。
默認(rèn)值:"

hive.map.aggr
決定是否可以在 Map 端進行聚合操作
默認(rèn)值:true

hive.join.emit.interval
Hive Join 操作的發(fā)射時間間隔,以毫秒為單位。
默認(rèn)值:1000

hive.join.cache.size
Hive Join 操作的緩存大小,以字節(jié)為單位。
默認(rèn)值:25000

hive.mapjoin.bucket.cache.size
Hive MapJoin 桶的緩存大小,以字節(jié)為單位。
默認(rèn)值:100

hive.mapjoin.size.key
Hive MapJoin 每一行鍵的大小,以字節(jié)為單位。
默認(rèn)值:10000

hive.mapjoin.cache.numrows
Hive MapJoin 所緩存的行數(shù)。
默認(rèn)值:25000

hive.groupby.mapaggr.checkinterval
對于 Group By 操作的 Map 聚合的檢測時間,以毫秒為單位。
默認(rèn)值:100000

hive.map.aggr.hash.percentmemory
Hive Map 端聚合的哈稀存儲所占用虛擬機的內(nèi)存比例。
默認(rèn)值:0.5

hive.map.aggr.hash.min.reduction
Hive Map 端聚合的哈稀存儲的最小 reduce 比例。
默認(rèn)值:0.5

hive.udtf.auto.progress
Hive UDTF 是否周期性地報告心跳,當(dāng) UDTF 執(zhí)行時間較長且不輸出行時有用。
默認(rèn)值:false

hive.fileformat.check
Hive 是否檢查輸出的文件格式。
默認(rèn)值:true

hive.querylog.location
Hive 實時查詢?nèi)罩舅诘哪夸?,如果該值為空,將不?chuàng)建實時的查詢?nèi)罩尽?br> 默認(rèn)值:'/tmp/$USER'

hive.script.serde
Hive 用戶腳本的 SerDe。
默認(rèn)值:'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe'

hive.script.recordreader
Hive 用戶腳本的 RecordRedaer。
默認(rèn)值:'org.apache.hadoop.hive.ql.exec.TextRecordReader'

hive.script.recordwriter
Hive 用戶腳本的 RecordWriter。
默認(rèn)值:'org.apache.hadoop.hive.ql.exec.TextRecordWriter'

hive.hwi.listen.host
HWI 所綁定的 HOST 或者 IP。
默認(rèn)值:'0.0.0.0'

hive.hwi.listen.port
HWI 所監(jiān)聽的 HTTP 端口。
默認(rèn)值:9999

hive.hwi.war.file
HWI 的 war 文件所在的路徑。
默認(rèn)值:$HWI_WAR_FILE

hive.test.mode
是否以測試模式運行 Hive
默認(rèn)值:false

hive.test.mode.prefix
Hive 測試模式的前綴。
默認(rèn)值:'test_'

hive.test.mode.samplefreq
Hive 測試模式取樣的頻率,即每秒鐘取樣的次數(shù)。
默認(rèn)值:32

hive.test.mode.nosamplelist
Hive 測試模式取樣的排除列表,以逗號分隔。
默認(rèn)值:"

hive.merge.size.per.task
每個任務(wù)合并后文件的大小,根據(jù)此大小確定 reducer 的個數(shù),默認(rèn) 256 M。
默認(rèn)值:256000000

hive.merge.smallfiles.avgsize
需要合并的小文件群的平均大小,默認(rèn) 16 M。
默認(rèn)值:16000000

hive.optimize.skewjoin
是否優(yōu)化數(shù)據(jù)傾斜的 Join,對于傾斜的 Join 會開啟新的 Map/Reduce Job 處理。
默認(rèn)值:false

hive.skewjoin.key
傾斜鍵數(shù)目閾值,超過此值則判定為一個傾斜的 Join 查詢。
默認(rèn)值: 1000000

hive.skewjoin.mapjoin.map.tasks
處理數(shù)據(jù)傾斜的 Map Join 的 Map 數(shù)上限。
默認(rèn)值: 10000

hive.skewjoin.mapjoin.min.split
處理數(shù)據(jù)傾斜的 Map Join 的最小數(shù)據(jù)切分大小,以字節(jié)為單位,默認(rèn)為32M。
默認(rèn)值:33554432

mapred.min.split.size
Map ReduceJob 的最小輸入切分大小,與 HadoopClient 使用相同的配置。
默認(rèn)值:1

hive.mergejob.maponly
是否啟用 Map Only 的合并 Job。
默認(rèn)值:true

hive.heartbeat.interval
Hive Job 的心跳間隔,以毫秒為單位。
默認(rèn)值:1000

hive.mapjoin.maxsize
Map Join 所處理的最大的行數(shù)。超過此行數(shù),Map Join進程會異常退出。
默認(rèn)值:1000000

hive.hashtable.initialCapacity
Hive 的 Map Join 會將小表 dump 到一個內(nèi)存的 HashTable 中,該 HashTable 的初始大小由此參數(shù)指定。
默認(rèn)值:100000

hive.hashtable.loadfactor
Hive 的 Map Join 會將小表 dump 到一個內(nèi)存的 HashTable 中,該 HashTable 的負(fù)載因子由此參數(shù)指定。
默認(rèn)值:0.75

hive.mapjoin.followby.gby.localtask.max.memory.usage
MapJoinOperator后面跟隨GroupByOperator時,內(nèi)存的最大使用比例
默認(rèn)值:0.55

hive.mapjoin.localtask.max.memory.usage
Map Join 的本地任務(wù)使用堆內(nèi)存的最大比例
默認(rèn)值:0.9

hive.mapjoin.localtask.timeout
Map Join 本地任務(wù)超時,淘寶版特有特性
默認(rèn)值:600000

hive.mapjoin.check.memory.rows
設(shè)置每多少行檢測一次內(nèi)存的大小,如果超過hive.mapjoin.localtask.max.memory.usage 則會異常退出,Map Join 失敗。
默認(rèn)值:100000

hive.debug.localtask
是否調(diào)試本地任務(wù),目前該參數(shù)沒有生效
默認(rèn)值:false

hive.task.progress
是否開啟 counters ,以記錄 Job 執(zhí)行的進度,同時客戶端也會拉取進度 counters。
默認(rèn)值:false

hive.input.format
Hive 的輸入 InputFormat。
默認(rèn)是org.apache.hadoop.hive.ql.io.HiveInputFormat,
其他還有org.apache.hadoop.hive.ql.io.CombineHiveInputFormat

hive.enforce.bucketing
是否啟用強制 bucketing。
默認(rèn)值:false

hive.enforce.sorting
是否啟用強制排序。
默認(rèn)值:false

hive.mapred.partitioner
Hive 的 Partitioner 類。
默認(rèn)值:'org.apache.hadoop.hive.ql.io.DefaultHivePartitioner'

hive.exec.script.trust
Hive ScriptOperator For trust
默認(rèn)值:false

hive.hadoop.supports.splittable.combineinputformat
是否支持可切分的CombieInputFormat
默認(rèn)值:false

hive.optimize.cp
是否優(yōu)化列剪枝。
默認(rèn)值:true

hive.optimize.ppd
是否優(yōu)化謂詞下推。
默認(rèn)值:true

hive.optimize.groupby
是否優(yōu)化 group by。
默認(rèn)值:true

hive.optimize.bucketmapjoin
是否優(yōu)化 bucket map join。
默認(rèn)值:false

hive.optimize.bucketmapjoin.sortedmerge
是否在優(yōu)化 bucket map join 時嘗試使用強制 sorted merge bucketmap join。 默認(rèn)值:false

hive.optimize.reducededuplication
是否優(yōu)化 reduce 冗余。
默認(rèn)值:true

hive.hbase.wal.enabled
是否開啟 HBase Storage Handler。
默認(rèn)值:true

hive.archive.enabled
是否啟用 har 文件。
默認(rèn)值:false

hive.archive.har.parentdir.settable
是否啟用 har 文件的父目錄可設(shè)置。
默認(rèn)值:false

hive.outerjoin.supports.filters
是否啟動外聯(lián)接支持過濾條件。
默認(rèn)值:true

hive.fetch.output.serde
對于 Fetch Task 的 SerDe 類
默認(rèn)值:'org.apache.hadoop.hive.serde2.DelimitedJSONSerDe'

hive.semantic.analyzer.hook
Hive 語義分析的 Hook,在語義分析階段的前后被調(diào)用,用于分析和修改AST及生成的執(zhí)行計劃,以逗號分隔。
默認(rèn)值:null

hive.cli.print.header
是否顯示查詢結(jié)果的列名,默認(rèn)為不顯示。
默認(rèn)值:false

hive.cli.encoding
Hive 默認(rèn)的命令行字符編碼。
默認(rèn)值:'UTF8'

hive.log.plan.progress
是否記錄執(zhí)行計劃的進度。
默認(rèn)值:true

hive.pull.progress.counters
是否從 Job Tracker 上拉取 counters,淘寶特有配置項。
默認(rèn)值:true

hive.job.pre.hooks
每個 Job 提交前執(zhí)行的 Hooks 列表,以逗號分隔,淘寶特有配置項。
默認(rèn)值:"

hive.job.post.hooks
每個 Job 完成后執(zhí)行的 Hooks 列表,以逗號分隔,淘寶特有配置項。
默認(rèn)值:"

hive.max.progress.counters
Hive 最大的進度 couters 個數(shù),淘寶特有配置項。
默認(rèn)值:100

hive.exec.script.wrapper
ScriptOperator 腳本調(diào)用的封裝,通常為腳本解釋程序。例如,可以把該變量值的名稱設(shè)置為"python",那么傳遞到 Script Operator 的腳本將會以"python<script command>"的命令形式進行調(diào)用,如果這個值為null或者沒有設(shè)置,那么該腳本將會直接以"<scriptcommand>"的命令形式調(diào)用。
默認(rèn)值:null

hive.check.fatal.errors.interval
客戶端通過拉取 counters 檢查嚴(yán)重錯誤的周期,以毫秒為單位,淘寶特有配置項。
默認(rèn)值:5000L

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容