Hive调优
1、Fetch抓取(Hive可以避免进行mapreduce)
在hive中对于某些查询,并不需要使用mareduce计算,例如我们在select * from employee,在这种情况下,可以直接去employee的存储目录,然后输出查询结果到控制台。
在hive-default.xml.template文件中hive.fetch.task.conversion默认是more,老版本hive默认是minimal,该属性修改为more以后,在全局查找、字段查找、limit查找等都不走mapreduce。
set hive.fetch.task.conversion=more;
本地模式:
有时hive的输入数据量特别小,在查询时触发执行任务消耗的时间回避实际的job执行时间要多很多,在这种情况下,hive可以通过本地模式来在单台机器上处理所有的任务,在处理小数据集时,执行时间会大大缩短
用户可以设置hive.exec.mode.local.auto的值为true,来让hive在核实的时候自动启动这个优化。
2、表的优化
2.1join
join原则:
1)小表join大表
将key相对分散,并且数据量小的表放在join的左边,这样可以有效的减少内存溢出错误发生的