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