Hive的基本理论知识
Hive是什么?
个人理解是把存储在hdfs上的数据映射位一张数据库表,提供类sql(HQL)语句的查询,方便数据的分析,查询。另外一点就是自动的把HQL转化为MapRudecu、Tez、Spark执行。
Hive的架构
- 用户接口:可以是hive shell,jdbc(java 访问hive),webUI
- 元数据:包括表名,表所属的数据库(默认为default)、表拥有者、表类型、列字段,分区字段,表数据所在目录。默认存储在derby中,因为是单线程的所以推荐采用mysql存储metaStore
- 驱动器包括:
- 解析器:将sql字符串转换为抽象语法树AST
- 编译器:将AST编译生成逻辑执行计划
- 优化器:对逻辑执行计划进行优化
- 执行器:对逻辑执行计划转化成可运行的物理计划:MR/TEZ/Spark