Hive配置項(xiàng)的含義詳解(3)
hive.exec.script.maxerrsize:一個(gè)map/reduce任務(wù)允許打印到標(biāo)準(zhǔn)錯(cuò)誤里的最大字節(jié)數(shù),為了防止腳本把分區(qū)日志填滿,默認(rèn)是100000;
hive.exec.script.allow.partial.consumption:hive是否允許腳本不從標(biāo)準(zhǔn)輸入中讀取任何內(nèi)容就成功退出,默認(rèn)關(guān)閉false;
hive.script.operator.id.env.var:在用戶使用transform函數(shù)做自定義map/reduce時(shí),存儲(chǔ)唯一的腳本標(biāo)識(shí)的環(huán)境變量的名字,默認(rèn)HIVE_SCRIPT_OPERATOR_ID;
hive.exec.compress.output:控制hive的查詢結(jié)果輸出是否進(jìn)行壓縮,壓縮方式在hadoop的mapred.output.compress中配置,默認(rèn)不壓縮false;
hive.exec.compress.intermediate:控制hive的查詢中間結(jié)果是否進(jìn)行壓縮,同上條配置,默認(rèn)不壓縮false;
hive.exec.parallel:hive的執(zhí)行job是否并行執(zhí)行,默認(rèn)不開啟false,在很多操作如join時(shí),子查詢之間并無關(guān)聯(lián)可獨(dú)立運(yùn)行,這種情況下開啟并行運(yùn)算可以大大加速;
hvie.exec.parallel.thread.number:并行運(yùn)算開啟時(shí),允許多少作業(yè)同時(shí)計(jì)算,默認(rèn)是8;
hive.exec.rowoffset:是否提供行偏移量的虛擬列,默認(rèn)是false不提供,Hive有兩個(gè)虛擬列:一個(gè)是INPUT__FILE__NAME,表示輸入文件的路徑,另外一個(gè)是BLOCK__OFFSET__INSIDE__FILE,表示記錄在文件中的塊偏移量,這對(duì)排查出現(xiàn)不符合預(yù)期或者null結(jié)果的查詢是很有幫助的(來自這篇文章);
hive.task.progress:控制hive是否在執(zhí)行過程中周期性的更新任務(wù)進(jìn)度計(jì)數(shù)器,開啟這個(gè)配置可以幫助job tracker更好的監(jiān)控任務(wù)的執(zhí)行情況,但是會(huì)帶來一定的性能損耗,當(dāng)動(dòng)態(tài)分區(qū)標(biāo)志hive.exec.dynamic.partition開啟時(shí),本配置自動(dòng)開啟;
hive.exec.pre.hooks:執(zhí)行前置條件,一個(gè)用逗號(hào)分隔開的實(shí)現(xiàn)了org.apache.hadoop.hive.ql.hooks.ExecuteWithHookContext接口的java class列表,配置了該配置后,每個(gè)hive任務(wù)執(zhí)行前都要執(zhí)行這個(gè)執(zhí)行前鉤子,默認(rèn)是空;
hive.exec.post.hooks:同上,執(zhí)行后鉤子,默認(rèn)是空;
hive.exec.failure.hooks:同上,異常時(shí)鉤子,在程序發(fā)生異常時(shí)執(zhí)行,默認(rèn)是空;
hive.mergejob.maponly:試圖生成一個(gè)只有map的任務(wù)去做merge,前提是支持CombineHiveInputFormat,默認(rèn)開啟true;
hive.mapjoin.smalltable.filesize:輸入表文件的mapjoin閾值,如果輸入文件的大小小于該值,則試圖將普通join轉(zhuǎn)化為mapjoin,默認(rèn)25MB;
hive.mapjoin.localtask.max.memory.usage:mapjoin本地任務(wù)執(zhí)行時(shí)hash表容納key/value的最大量,超過這個(gè)值的話本地任務(wù)會(huì)自動(dòng)退出,默認(rèn)是0.9;
hive.mapjoin.followby.gby.localtask.max.memory.usage:類似上面,只不過是如果mapjoin后有一個(gè)group by的話,該配置控制類似這樣的query的本地內(nèi)存容量上限,默認(rèn)是0.55;
hive.mapjoin.check.memory.rows:在運(yùn)算了多少行后執(zhí)行內(nèi)存使用量檢查,默認(rèn)100000;
hive.heartbeat.interval:發(fā)送心跳的時(shí)間間隔,在mapjoin和filter操作中使用,默認(rèn)1000;
hive.auto.convert.join:根據(jù)輸入文件的大小決定是否將普通join轉(zhuǎn)換為mapjoin的一種優(yōu)化,默認(rèn)不開啟false;
hive.script.auto.progress:hive的transform/map/reduce腳本執(zhí)行時(shí)是否自動(dòng)的將進(jìn)度信息發(fā)送給TaskTracker來避免任務(wù)沒有響應(yīng)被誤殺,本來是當(dāng)腳本輸出到標(biāo)準(zhǔn)錯(cuò)誤時(shí),發(fā)送進(jìn)度信息,但是開啟該項(xiàng)后,輸出到標(biāo)準(zhǔn)錯(cuò)誤也不會(huì)導(dǎo)致信息發(fā)送,因此有可能會(huì)造成腳本有死循環(huán)產(chǎn)生,但是TaskTracker卻沒有檢查到從而一直循環(huán)下去;
hive.script.serde:用戶腳本轉(zhuǎn)換輸入到輸出時(shí)的SerDe約束,默認(rèn)是org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe;
hive.script.recordreader:從腳本讀數(shù)據(jù)的時(shí)候的默認(rèn)reader,默認(rèn)是org.apache.hadoop.hive.ql.exec.TextRecordReader;
hive.script.recordwriter:寫數(shù)據(jù)到腳本時(shí)的默認(rèn)writer,默認(rèn)org.apache.hadoop.hive.ql.exec.TextRecordWriter;
hive.input.format:輸入格式,默認(rèn)是org.apache.hadoop.hive.ql.io.CombineHiveInputFormat,如果出現(xiàn)問題,可以改用org.apache.hadoop.hive.ql.io.HiveInputFormat;
hive.udtf.auto.progress:UDTF執(zhí)行時(shí)hive是否發(fā)送進(jìn)度信息到TaskTracker,默認(rèn)是false;
hive.mapred.reduce.tasks.speculative.execution:reduce任務(wù)推測(cè)執(zhí)行是否開啟,默認(rèn)是true;
hive.exec.counters.pull.interval:運(yùn)行中job輪詢JobTracker的時(shí)間間隔,設(shè)置小會(huì)影響JobTracker的load,設(shè)置大可能看不出運(yùn)行任務(wù)的信息,要去平衡,默認(rèn)是1000;
hive.enforce.bucketing:數(shù)據(jù)分桶是否被強(qiáng)制執(zhí)行,默認(rèn)false,如果開啟,則寫入table數(shù)據(jù)時(shí)會(huì)啟動(dòng)分桶,個(gè)人對(duì)分桶的理解可以參考這篇文章,寫的較清楚,有示例,分桶在做全表查詢和帶有分區(qū)字段查詢時(shí)感覺影響不大,主要作用在sampling;
hive.enforce.sorting:開啟強(qiáng)制排序時(shí),插數(shù)據(jù)到表中會(huì)進(jìn)行強(qiáng)制排序,默認(rèn)false;
hive.optimize.reducededuplication:如果數(shù)據(jù)已經(jīng)根據(jù)相同的key做好聚合,那么去除掉多余的map/reduce作業(yè),此配置是文檔的推薦配置,建議打開,默認(rèn)是true;
hive.exec.dynamic.partition:在DML/DDL中是否支持動(dòng)態(tài)分區(qū),默認(rèn)false;
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);
hive.exec.max.dynamic.partitions:動(dòng)態(tài)分區(qū)的上限,默認(rèn)1000;
hive.exec.max.dynamic.partitions.pernode:每個(gè)mapper/reducer節(jié)點(diǎn)可以創(chuàng)建的最大動(dòng)態(tài)分區(qū)數(shù),默認(rèn)100;
hive.exec.max.created.files:一個(gè)mapreduce作業(yè)能創(chuàng)建的HDFS文件最大數(shù),默認(rèn)是100000;
hive.exec.default.partition.name:當(dāng)動(dòng)態(tài)分區(qū)啟用時(shí),如果數(shù)據(jù)列里包含null或者空字符串的話,數(shù)據(jù)會(huì)被插入到這個(gè)分區(qū),默認(rèn)名字是__HIVE_DEFAULT_PARTITION__;
hive.fetch.output.serde:FetchTask序列化fetch輸出時(shí)需要的SerDe,默認(rèn)是org.apache.hadoop.hive.serde2.DelimitedJSONSerDe;
hive.exec.mode.local.auto:是否由hive決定自動(dòng)在local模式下運(yùn)行,默認(rèn)是false,關(guān)于滿足什么條件開啟localmode,可以參考這篇文章;
posted on 2013-09-10 13:45 changedi 閱讀(3963) 評(píng)論(1) 編輯 收藏 所屬分類: 數(shù)據(jù)