Hive 优化-限制用户误交大作业查询

最近有些同事些sql进行查询时,sql语句里不指定partition字段,这样直接造成hive生成Hadoop的MapReduce任务时查询的数据量巨大,从而影响整个集群的性能。经研究可以通过配置Hive参数来预防此类错误,从而达到优化的目的。

在hive-site.xml中添加以下配置:

<property>

<name>hive.mapred.mode</name>

<value>strict</value>

</property>

这样,在提交类似一下SQL(where中不指定partition条件)时,将会抛出错误而不执行该sql:

hive>select*fromaccess_rawlimit10;

FAILED:Errorinsemanticanalysis:NopartitionpredicatefoundforAlias"access_raw"Table"access_raw"

而正确书写SQL的方法为:

hive>select*fromaccess_rawwherelog_date='2012-08-10'limit10;

这样,就对sql语句进行了过滤。

相关推荐