1. 将hive拉取的模式设置为more模式
hive.fetch.task.conversion=more;
2. 决定 Hive 是否应该自动地根据输入文件大小,在本地运行(在GateWay运行) ;
hive.exec.mode.local.auto
3. 自动 mapjoin
是否根据输入小表的大小,自动将 Reduce 端的 Common Join 转化为 Map Join,从而加快大表关联小表的 Join 速度。 默认:false。
hive.auto.convert.join
4. 设置 reduce 个数
所提交 Job 的 reduer 的个数,使用 Hadoop Client 的配置。 默认是-1,表示Job执行的个数交由Hive来分配;
mapred.reduce.tasks
5. 数据倾斜
原理是,在Group by中,对一些比较小的分区进行合并,默认是false;
开启map端聚合;
hive.map.aggr=true
决定 group by 操作是否支持倾斜的数据。
hive.groupby.skewindata=true
6. 合并小文件
是否开启合并 Map/Reduce 小文件,对于 Hadoop 0.20 以前的版本,起一首新的 Map/Reduce Job,对于 0.20 以后的版本,则是起使用 CombineInputFormat 的 MapOnly Job。 默认是:false;
hive.merge.mapredfiles
7. 是否允许笛卡尔积
Map/Redure 模式,如果设置为 strict,将不允许笛卡尔积。 默认是:‘nonstrict’;
hive.mapred.mode
8. 是否开启 map/reduce job的并发提交。
hive.exec.parallel
默认Map/Reduce job是顺序执行的,默认并发数量是8,可以配置。默认是:false;
9. 动态分区
是否打开动态分区。 需要打开,默认:false;
hive.exec.dynamic.partition =true
set hive.exec.dynamic.partition.mode=nonstirct