hive中提高代码运行效率的参数配置及代码优化

今天整理下平时hive中用以提高代码运行效率的几个参数,和大家分享一下:

1、set mapreduce.map.memory.mb=5120;

  此参数是设置每个map使用内存的大小,默认1024M,这个参数是控制map数量的关键参数。如果需要处理的文件较多或             较大时,则分开处理效率会较快,如果文件较少或较小时会造成map资源的浪费。

2、set mapreduce.reduce.memory.mb=10240;

  此参数是每个MapReduce作业的reduce任务可申请的内存资源数量,默认1024M,这个参数是控制reduce数量的关键参数。

3、set mapreduce.map.java.opts=-Xmx4096m;

  在执行map任务的时发生java heap space问题任务会被杀掉。其可以配置比mapreduce.map.memory.mb的内存还要大,当         设置的比物理可用内存还要大时,会使用虚拟内存。当设置内存数大于虚拟可用内存时会因为申请了超过门限的内存而被             yarn干掉。

4、set mapreduce.reduce.java.opts =-Xmx9000m;

   这个参数设置同set mapreduce.map.java.opts

5、set mapreduce.task.timeout=1800000;

这个参数主要是控制job执行的时间。

6、set hive.exec.parallel=true;

  此参数是开启并发执行。当某个job中可能含有众多的阶段,其中某些没有依赖关系的阶段可以并发执行,开启并发执行后job        任务可以更快的完成。

7、在执行hive SQL进行多个表连接时,应是小表连大表。原因是:hive在对每行记录操作时会把其他表先缓存起来,直到扫描 最后的表进行计算。

8、在使用三个以上的表进行join操作时,如果每个on使用相同的字段连接时只会产生一个MapReduce。

9、在执行SQL时如用distinct进行去重时,应尽量避免而选择groupby来进行替代。

10、当遇到一个大表去连接一个小表时,可以使用mapjoin将小表加载到内存中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值