1. 程式人生 > >hive優化過頭出問題 ,可以使用一下方式

hive優化過頭出問題 ,可以使用一下方式

set mapred.reduce.tasks=-1;
set hive.exec.reducers.max=160;
set hive.auto.convert.join=true;
set hive.exec.parallel=true;
set hive.exec.parallel.thread.number=16; 
set hive.optimize.skewjoin=true;
set hive.exec.reducers.bytes.per.reducer=100000000;
set mapred.max.split.size=200000000;
set mapred.min.split.size.per.node=100000000;
set mapred.min.split.size.per.rack=100000000;
set hive.hadoop.supports.splittable.combineinputformat=true;
set hive.input.format=org.apache.hadoop.hive.ql.io.CombineHiveInputFormat;

上面優化條件在執行hive的時候有可能躲避錯誤,導致出現有時候有資料有時候丟資料

暫且理解為優化過了頭

使用下面引數,關閉優化條件

set hive.exec.mode.local.auto=false;
set hive.auto.convert.join=false;
set hive.exec.compress.output=false;

 

最後發現是下面兩個引數導致的

set hive.auto.convert.join=true;(測試後與此無關)        
set hive.optimize.skewjoin=true;