1. 程式人生 > >hive常用引數配置設定

hive常用引數配置設定

 

hive.exec.mode.local.auto 
決定 Hive 是否應該自動地根據輸入檔案大小,在本地執行(在GateWay執行) 
true

hive.exec.mode.local.auto.inputbytes.max 
如果 hive.exec.mode.local.auto 為 true,當輸入檔案大小小於此閾值時可以自動在本地模式執行,預設是 128兆。 
134217728L

hive.exec.mode.local.auto.tasks.max 
如果 hive.exec.mode.local.auto 為 true,當 Hive Tasks(Hadoop Jobs)小於此閾值時,可以自動在本地模式執行。 
4

hive.auto.convert.join 
是否根據輸入小表的大小,自動將 Reduce 端的 Common Join 轉化為 Map Join,從而加快大表關聯小表的 Join 速度。 
false

hive.mapred.local.mem 
Mapper/Reducer 在本地模式的最大記憶體量,以位元組為單位,0為不限制。 
0

mapred.reduce.tasks 
所提交 Job 的 reduer 的個數,使用 Hadoop Client 的配置。 
預設是-1,表示Job執行的個數交由Hive來分配
-1

hive.exec.scratchdir 
HDFS路徑,用於儲存不同 map/reduce 階段的執行計劃和這些階段的中間輸出結果。 
/tmp/<user.name>/hive

hive.metastore.warehouse.dir 
Hive 預設的資料檔案儲存路徑,通常為 HDFS 可寫的路徑。 
"

hive.groupby.skewindata 
決定 group by 操作是否支援傾斜的資料。 
原理是,在Group by中,對一些比較小的分割槽進行合併
false

hive.merge.mapfiles 
是否開啟合併 Map 端小檔案,對於 Hadoop 0.20 以前的版本,起一首新的 Map/Reduce Job,對於 0.20 以後的版本,則是起使用 CombineInputFormat 的 MapOnly Job。 
true

hive.merge.mapredfiles 
是否開啟合併 Map/Reduce 小檔案,對於 Hadoop 0.20 以前的版本,起一首新的 Map/Reduce Job,對於 0.20 以後的版本,則是起使用 CombineInputFormat 的 MapOnly Job。 
false

hive.default.fileformat 
Hive 預設的輸出檔案格式,與建立表時所指定的相同,可選項為 'TextFile' 、 'SequenceFile' 或者 'RCFile'。 
'TextFile'

hive.mapred.mode 
Map/Redure 模式,如果設定為 strict,將不允許笛卡爾積。 
'nonstrict'

hive.exec.parallel 
是否開啟 map/reduce job的併發提交。 
預設Map/Reduce job是順序執行的,預設併發數量是8,可以配置
false

hive.security.authorization.enabled 
Hive 是否開啟許可權認證。 
開啟認證後,需要執行授權語句才能對錶進行操作,詳細請見hive.apache.org
false

hive.exec.plan 
Hive 執行計劃的路徑,會在程式中自動進行設定 
null

hive.exec.submitviachild 
決定 map/reduce Job 是否應該使用各自獨立的 JVM 進行提交(Child程序),預設情況下,使用與 HQL compiler 相同的 JVM 進行提交。 
false

hive.exec.script.maxerrsize 
通過 TRANSFROM/MAP/REDUCE 所執行的使用者指令碼所允許的最大的序列化錯誤數。 
100000

hive.exec.script.allow.partial.consumption 
是否允許指令碼只處理部分資料,如果設定為 true ,因broken pipe等造成的資料未處理完成將視為正常。 
false

hive.exec.compress.output 
決定查詢中最後一個 map/reduce job 的輸出是否為壓縮格式。 
false

hive.exec.compress.intermediate 
決定查詢的中間 map/reduce job(中間 stage)的輸出是否為壓縮格式。
對於只進行Map的資料就沒有必要了。壓縮可以減少網路IO,提高效率。 
false

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


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

hive.exec.reducers.bytes.per.reducer 
每一個 reducer 的平均負載位元組數。
改變此引數可以用來影響hive的啟動的Reducer的個數,預設每個Reducer處理1G資料
1000000000

hive.exec.reducers.max 
reducer 個數的上限。 
999

hive.exec.pre.hooks 
語句層面,整條 HQL 語句在執行前的 hook 類名。 
"

hive.exec.post.hooks 
語句層面,整條 HQL 語句在執行完成後的 hook 類名。


hive.exec.parallel.thread.number 
併發提交時的併發執行緒的個數。 預設8個
8

hive.mapred.reduce.tasks.speculative.execution 
是否開啟 reducer 的推測執行,與 mapred.reduce.tasks.speculative.execution 作用相同。 
false

hive.exec.counters.pull.interval 
客戶端拉取 progress counters 的時間,以毫秒為單位。 
1000L

hive.exec.dynamic.partition 
是否開啟動態分割槽。 需要開啟
false

hive.exec.dynamic.partition.mode 
開啟動態分割槽後,動態分割槽的模式,有 strict 和 nonstrict 兩個值可選,strict 要求至少包含一個靜態分割槽列,nonstrict 則無此要求。 
建議設定成nonstrict,strict情況下,查詢表資料要求強制指定分割槽。
strict

hive.exec.max.dynamic.partitions 
所允許的最大的動態分割槽的個數。可以手動增加分割槽。
1000

hive.exec.max.dynamic.partitions.pernode 
單個 reduce 結點所允許的最大的動態分割槽的個數。 
100

hive.exec.default.partition.name 
預設的動態分割槽的名稱,當動態分割槽列為''或者null時,使用此名稱。'' 
'__HIVE_DEFAULT_PARTITION__'

hadoop.bin.path 
Hadoop Client 可執行指令碼的路徑,該路徑用於通過單獨的 JVM 提交 job,使用 Hadoop Client 的配置。 
$HADOOP_HOME/bin/hadoop

hadoop.config.dir 
Hadoop Client 配置檔案的路徑,使用 Hadoop Client 的配置。 
$HADOOP_HOME/conf

fs.default.name 
Namenode 的 URL,使用 Hadoop Client 的配置。 
file:///

map.input.file 
Map 的輸入檔案,使用 Hadoop Client 的配置。 
null

mapred.input.dir 
Map 的輸入目錄,使用 Hadoop Client 的配置。 
null

mapred.input.dir.recursive 
輸入目錄是否可遞迴巢狀,使用 Hadoop Client 的配置。 
false

mapred.job.tracker 
Job Tracker 的 URL,使用 Hadoop Client 的配置,如果這個配置設定為 'local',將使用本地模式。 
local

mapred.job.name 
Map/Reduce 的 job 名稱,如果沒有設定,則使用生成的 job name,使用 Hadoop Client 的配置。 
null

mapred.reduce.tasks.speculative.execution 
Map/Reduce 推測執行,使用 Hadoop Client 的配置。 
null

hive.metastore.metadb.dir 
Hive 元資料庫所在路徑。 
"

hive.metastore.uris 
Hive 元資料的 URI,多個 thrift://地址,以英文逗號分隔。 
"

hive.metastore.connect.retries 
連線到 Thrift 元資料服務的最大重試次數。 
3

javax.jdo.option.ConnectionPassword 
JDO 的連線密碼。 
"

hive.metastore.ds.connection.url.hook 
JDO 連線 URL Hook 的類名,該 Hook 用於獲得 JDO 元資料庫的連線字串,為實現了 JDOConnectionURLHook 介面的類。 
"

javax.jdo.option.ConnectionURL 
元資料庫的連線 URL。 
"

hive.metastore.ds.retry.attempts 
當沒有 JDO 資料連線錯誤後,嘗試連線後臺資料儲存的最大次數。 
1

hive.metastore.ds.retry.interval 
每次嘗試連線後臺資料儲存的時間間隔,以毫秒為單位。 
1000

hive.metastore.force.reload.conf 
是否強制重新載入元資料配置,一但重新載入,該值就會被重置為 false。 
false

hive.metastore.server.min.threads 
Thrift 服務執行緒池的最小執行緒數。 
8

hive.metastore.server.max.threads 
Thrift 服務執行緒池的最大執行緒數。 
0x7fffffff

hive.metastore.server.tcp.keepalive 
Thrift 服務是否保持 TCP 連線。 
true

hive.metastore.archive.intermediate.original 
用於歸檔壓縮的原始中間目錄的字尾,這些目錄是什麼並不重要,只要能夠避免衝突即可。 
'_INTERMEDIATE_ORIGINAL'

hive.metastore.archive.intermediate.archived 
用於歸檔壓縮的壓縮後的中間目錄的字尾,這些目錄是什麼並不重要,只要能夠避免衝突即可。 
'_INTERMEDIATE_ARCHIVED'

hive.metastore.archive.intermediate.extracted 
用於歸檔壓縮的解壓後的中間目錄的字尾,這些目錄是什麼並不重要,只要能夠避免衝突即可。 
'_INTERMEDIATE_EXTRACTED'

hive.cli.errors.ignore 
是否忽略錯誤,對於包含多的 SQL 檔案,可以忽略錯誤的行,繼續執行下一行。 
false

hive.session.id 
當前會話的識別符號,格式為“使用者名稱_時間”用於記錄在 job conf 中,一般不予以手動設定。 
"

hive.session.silent 
當前會話是否在 silent 模式執行。 如果不是 silent 模式,所以 info 級打在日誌中的訊息,都將以標準錯誤流的形式輸出到控制檯。
false

hive.query.string 
當前正在被執行的查詢字串。 
"

hive.query.id 
當前正在被執行的查詢的ID。 
"

hive.query.planid 
當前正在被執行的 map/reduce plan 的 ID。 
"

hive.jobname.length 
當前 job name 的最大長度,hive 會根據此長度省略 job name 的中間部分。 
50

hive.jar.path 
通過單獨的 JVM 提交 job 時,hive_cli.jar 所在的路徑 
"

hive.aux.jars.path 
各種由使用者自定義 UDF 和 SerDe 構成的外掛 jar 包所在的路徑。 
"

hive.added.files.path 
ADD FILE 所增加的檔案的路徑。 
"

hive.added.jars.path 
ADD JAR 所增加的檔案的路徑。 
"

hive.added.archives.path 
ADD ARCHIEVE 所增加的檔案的路徑。 
"

hive.table.name 
當前的 Hive 表的名稱,該配置將通過 ScirptOperator 傳入到使用者指令碼中。 
"

hive.partition.name 
當前的 Hive 分割槽的名稱,該配置將通過 ScriptOperator 傳入到使用者指令碼中。 
"

hive.script.auto.progress 
指令碼是否週期性地向 Job Tracker 傳送心跳,以避免指令碼執行的時間過長,使 Job Tracker 認為指令碼已經掛掉了。 
false

hive.script.operator.id.env.var 
用於識別 ScriptOperator ID 的環境變數的名稱。 
'HIVE_SCRIPT_OPERATOR_ID'

hive.alias 
當前的 Hive 別名,該配置將通過 ScriptOpertaor 傳入到使用者指令碼中。 
"

hive.map.aggr 
決定是否可以在 Map 端進行聚合操作 
true

hive.join.emit.interval 
Hive Join 操作的發射時間間隔,以毫秒為單位。 
1000

hive.join.cache.size 
Hive Join 操作的快取大小,以位元組為單位。 
25000

hive.mapjoin.bucket.cache.size 
Hive Map Join 桶的快取大小,以位元組為單位。 
100

hive.mapjoin.size.key 
Hive Map Join 每一行鍵的大小,以位元組為單位。 
10000

hive.mapjoin.cache.numrows 
Hive Map Join 所快取的行數。 
25000

hive.groupby.mapaggr.checkinterval 
對於 Group By 操作的 Map 聚合的檢測時間,以毫秒為單位。 
100000

hive.map.aggr.hash.percentmemory 
Hive Map 端聚合的哈稀儲存所佔用虛擬機器的記憶體比例。 
0.5

hive.map.aggr.hash.min.reduction 
Hive Map 端聚合的哈稀儲存的最小 reduce 比例。 
0.5

hive.udtf.auto.progress 
Hive UDTF 是否週期性地報告心跳,當 UDTF 執行時間較長且不輸出行時有用。 
false

hive.fileformat.check 
Hive 是否檢查輸出的檔案格式。 
true

hive.querylog.location 
Hive 實時查詢日誌所在的目錄,如果該值為空,將不建立實時的查詢日誌。 
'/tmp/$USER'

hive.script.serde 
Hive 使用者指令碼的 SerDe。 
'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe'

hive.script.recordreader 
Hive 使用者指令碼的 RecordRedaer。 
'org.apache.hadoop.hive.ql.exec.TextRecordReader'

hive.script.recordwriter 
Hive 使用者指令碼的 RecordWriter。 
'org.apache.hadoop.hive.ql.exec.TextRecordWriter'

hive.hwi.listen.host 
HWI 所繫結的 HOST 或者 IP。 
'0.0.0.0'

hive.hwi.listen.port 
HWI 所監聽的 HTTP 埠。 
9999

hive.hwi.war.file 
HWI 的 war 檔案所在的路徑。 
$HWI_WAR_FILE

hive.test.mode 
是否以測試模式執行 Hive 
false

hive.test.mode.prefix 
Hive 測試模式的字首。 
'test_'

hive.test.mode.samplefreq 
Hive 測試模式取樣的頻率,即每秒鐘取樣的次數。 
32

hive.test.mode.nosamplelist 
Hive 測試模式取樣的排除列表,以逗號分隔。 
"

hive.merge.size.per.task 
每個任務合併後文件的大小,根據此大小確定 reducer 的個數,預設 256 M。 
256000000

hive.merge.smallfiles.avgsize 
需要合併的小檔案群的平均大小,預設 16 M。 
16000000

hive.optimize.skewjoin 
是否優化資料傾斜的 Join,對於傾斜的 Join 會開啟新的 Map/Reduce Job 處理。 
false

hive.skewjoin.key 
傾斜鍵數目閾值,超過此值則判定為一個傾斜的 Join 查詢。 
1000000

hive.skewjoin.mapjoin.map.tasks 
處理資料傾斜的 Map Join 的 Map 數上限。 
10000

hive.skewjoin.mapjoin.min.split 
處理資料傾斜的 Map Join 的最小資料切分大小,以位元組為單位,預設為32M。 
33554432

mapred.min.split.size 
Map Reduce Job 的最小輸入切分大小,與 Hadoop Client 使用相同的配置。 
1

hive.mergejob.maponly 
是否啟用 Map Only 的合併 Job。 
true

hive.heartbeat.interval 
Hive Job 的心跳間隔,以毫秒為單位。 
1000

hive.mapjoin.maxsize 
Map Join 所處理的最大的行數。超過此行數,Map Join程序會異常退出。 
1000000

hive.hashtable.initialCapacity 
Hive 的 Map Join 會將小表 dump 到一個記憶體的 HashTable 中,該 HashTable 的初始大小由此引數指定。 
100000

hive.hashtable.loadfactor 
Hive 的 Map Join 會將小表 dump 到一個記憶體的 HashTable 中,該 HashTable 的負載因子由此引數指定。 
0.75

hive.mapjoin.followby.gby.localtask.max.memory.usage 
MapJoinOperator後面跟隨GroupByOperator時,記憶體的最大使用比例 
0.55

hive.mapjoin.localtask.max.memory.usage 
Map Join 的本地任務使用堆記憶體的最大比例 
0.9

hive.mapjoin.localtask.timeout 
Map Join 本地任務超時,淘寶版特有特性 
600000

hive.mapjoin.check.memory.rows 
設定每多少行檢測一次記憶體的大小,如果超過 hive.mapjoin.localtask.max.memory.usage 則會異常退出,Map Join 失敗。 
100000

hive.debug.localtask 
是否除錯本地任務,目前該引數沒有生效 
false

hive.task.progress 
是否開啟 counters ,以記錄 Job 執行的進度,同時客戶端也會拉取進度 counters。 
false

hive.input.format 
Hive 的輸入 InputFormat。 
預設是org.apache.hadoop.hive.ql.io.HiveInputFormat,其他還有org.apache.hadoop.hive.ql.io.CombineHiveInputFormat

hive.enforce.bucketing 
是否啟用強制 bucketing。 
false

hive.enforce.sorting 
是否啟用強制排序。 
false

hive.mapred.partitioner 
Hive 的 Partitioner 類。 
'org.apache.hadoop.hive.ql.io.DefaultHivePartitioner'

hive.exec.script.trust 
Hive Script Operator For trust 
false

hive.hadoop.supports.splittable.combineinputformat 
是否支援可切分的 CombieInputFormat 
false

hive.optimize.cp 
是否優化列剪枝。 
true

hive.optimize.ppd 
是否優化謂詞下推。 
true

hive.optimize.groupby 
是否優化 group by。 
true

hive.optimize.bucketmapjoin 
是否優化 bucket map join。 
false

hive.optimize.bucketmapjoin.sortedmerge 
是否在優化 bucket map join 時嘗試使用強制 sorted merge bucket map join。 
false

hive.optimize.reducededuplication 
是否優化 reduce 冗餘。 
true

hive.hbase.wal.enabled 
是否開啟 HBase Storage Handler。 
true

hive.archive.enabled 
是否啟用 har 檔案。 
false

hive.archive.har.parentdir.settable 
是否啟用 har 檔案的父目錄可設定。 
false

hive.outerjoin.supports.filters 
是否啟動外聯接支援過濾條件。 
true

hive.fetch.output.serde 
對於 Fetch Task 的 SerDe 類 
'org.apache.hadoop.hive.serde2.DelimitedJSONSerDe'

hive.semantic.analyzer.hook 
Hive 語義分析的 Hook,在語義分析階段的前後被呼叫,用於分析和修改AST及生成的執行計劃,以逗號分隔。 
null

hive.cli.print.header 
是否顯示查詢結果的列名,預設為不顯示。 
false

hive.cli.encoding 
Hive 預設的命令列字元編碼。 
'UTF8'

hive.log.plan.progress 
是否記錄執行計劃的進度。 
true

hive.pull.progress.counters 
是否從 Job Tracker 上拉取 counters,淘寶特有配置項。 
true

hive.job.pre.hooks 
每個 Job 提交前執行的 Hooks 列表,以逗號分隔,淘寶特有配置項。 
"

hive.job.post.hooks 
每個 Job 完成後執行的 Hooks 列表,以逗號分隔,淘寶特有配置項。 
"

hive.max.progress.counters 
Hive 最大的進度 couters 個數,淘寶特有配置項。 
100

hive.exec.script.wrapper 
Script Operator 指令碼呼叫的封裝,通常為指令碼解釋程式。例如,可以把該變數值的名稱設定為"python",那麼傳遞到 Script Operator 的指令碼將會以"python &lt;script command&gt;"的命令形式進行呼叫,如果這個值為null或者沒有設定,那麼該指令碼將會直接以"&lt;script command&gt;"的命令形式呼叫。 
null

hive.check.fatal.errors.interval 
客戶端通過拉取 counters 檢查嚴重錯誤的週期,以毫秒為單位,淘寶特有配置項。 
5000L