hive中在做查询时,经常会碰到这种问题,任务只起map不起reduce;
环境:
hive
100出头的节点
7T左右的内存
basic表有300-400个分区,总数据量在6亿-7亿;
如下sql:
select * from basic_sum where user_log_acct='abcd';
这个sql只会起一个job,这个job只有map,没有reduce;输入数据较多,会比较慢;
可以对表进行distribute by,强制让其产生reduce;
优化后sql如下:
select * from basic_sum where user_log_acct='abcd' distribute by rand(1234);
这个sql会产生reduce;
具体效率如下: