严格模式

  1. hive.strict.checks.no.partition.filter = true
  2. 1、对分区表的查询 必须 where筛选 分区字段
  3. 2、使用order by必须limit
  4. 3、不让出现笛卡尔积

hiveserver2、metastore

hiveserver2、metastore都是一个代理服务。

1. 客户端可以直接连接hive、mysql元数据库,比如cli命令行 这时就不需要开启hiveserver2、metastore。
2. 如果需要JDBC连接 或者所有的连接都通过hiveserver2、metastore再去访问hive、元数据库。那就需要开启

整体架构

通过接口提交hql,结合metastore,在四个驱动器driver的工作下,转化成mapreduce作业

用户接口

  • Cli、JDBC、webUI

    元数据

  • metastore

    hadoop

  • HDFS存储+MapReduce计算

    驱动器Driver

  • 解析器:一般用第三方如antlr,将sql转化为语法树AST

  • 编译器:将AST编译生成逻辑执行计划
  • 优化器:对逻辑执行计划进行优化
  • 执行器:将逻辑执行计划转换成物理执行计划(MapReduce spark)