HIVE调优之严格模式

99封情书 提交于 2019-11-28 17:30:02

设置为严格模式后,可以禁止3种类型的查询

  • 带有分区的表的查询

    • 如果在一个分区表执行hive,除非where语句中包含分区字段过滤条件来显示数据范围,否则不允许执行。换句话说就是在严格模式下不允许用户扫描所有的分区,进行这个限制的原因是,通常分区表都拥有非常大的数据集,而且数据增加迅速。如果不进行分区限制的查询会消耗巨大的资源来处理

  • 带有orderby的查询

    • 对于使用了orderby的查询,要求必须有limit语句。因为orderby为了执行排序过程会讲所有的结果分发到同一个reducer中 进行处理,强烈要求用户增加这个limit语句可以防止reducer额外执行很长一段时间

  • 限制笛卡尔积的查询

    • 对关系型数据库非常了解的用户可能期望在执行join查询的时候不适用on语句而是使用where语句,这样关系型数据库的执行优化器就可以高效的将where语句转换成那个on语句了。不幸的是,Hive并不支持这样的优化,因为如果表非常大的话,就会出现不可控的情况

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!