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