HIVE调优之严格模式

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

  • 带有分区的表的查询

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

  • 带有orderby的查询

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

  • 限制笛卡尔积的查询

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

posted @ 2019-08-27 09:25  北漂屌丝  阅读(227)  评论(0编辑  收藏  举报