近日,在项目中有一段sql执行总是报OutOfMemory
原因是sql中含有大表的group by操作,这导致了数据在map端进行了聚合,超过hash map的大小;
可通过以下参数,关闭map端的聚合,即可正常运行sql
set hive.map.aggr=false;
也可参考下面的文章,通过设置hive.map.aggr.hash.percentmemory的大小来达到这一目的
http://dev.bizo.com/2013/02/map-side-aggregations-in-apache-hive.html
https://developer.aliyun.com/article/238692