衡阳网站建设制作,网站项目设计流程案例,网站把域名解析到新ip后,青岛网站建设网站设计Hive 工作原理详解-阿里云开发者社区 Hive的服务端组件
1. Driver组件#xff1a;该组件包括#xff1a;Compiler、Optimizer、Executor,它可以将Hive的编译、解析、优化转化为MapReduce任务提交给Hadoop1中的JobTracker或者是Hadoop2中的SourceManager来进行实际的执行相应…Hive 工作原理详解-阿里云开发者社区 Hive的服务端组件
1. Driver组件该组件包括Compiler、Optimizer、Executor,它可以将Hive的编译、解析、优化转化为MapReduce任务提交给Hadoop1中的JobTracker或者是Hadoop2中的SourceManager来进行实际的执行相应的任务。 2. MetaStore组件存储着hive的元数据信息将自己的元数据存储到了关系型数据库当中支持的数据库主要有Mysql、Derby、支持把metastore独立出来放在远程的集群上面使得hive更加健壮。元数据主要包括了表的名称、表的列、分区和属性、表的属性是不是外部表等等、表的数据所在的目录。 3. 用户接口CLICommand Line Interface)(常用的接口命令行模式、Client:Hive的客户端用户连接至Hive Server ,在启动Client的时候需要制定Hive Server所在的节点并且在该节点上启动Hive Server、WUI:通过浏览器的方式访问Hive。 Hive的工作原理 流程大致步骤为
1. 用户提交查询等任务给Driver。
2. 编译器获得该用户的任务Plan。
3. 编译器Compiler根据用户任务去MetaStore中获取需要的Hive的元数据信息。
4. 编译器Compiler得到元数据信息对任务进行编译先将HiveQL转换为抽象语法树然后将抽象语法树转换成查询块将查询块转化为逻辑的查询计划重写逻辑查询计划将逻辑计划转化为物理的计划MapReduce, 最后选择最佳的策略。
5. 将最终的计划提交给Driver。
6. Driver将计划Plan转交给ExecutionEngine去执行获取元数据信息提交给JobTracker或者SourceManager执行该任务任务会直接读取HDFS中文件进行相应的操作。
7. 获取执行的结果。
8. 取得并返回执行结果。 创建表时
解析用户提交的Hive语句--对其进行解析--分解为表、字段、分区等Hive对象。根据解析到的信息构建对应的表、字段、分区等对象从SEQUENCE_TABLE中获取构建对象的最新的ID与构建对象信息名称、类型等等一同通过DAO方法写入元数据库的表中成功后将SEQUENCE_TABLE中对应的最新ID5.实际上常见的RDBMS都是通过这种方法进行组织的其系统表中和Hive元数据一样显示了这些ID信息。通过这些元数据可以很容易的读取到数据。 Hive编译过程
基本流程为将HiveQL转化为抽象语法树再转为查询块然后转为逻辑查询计划再转为物理查询计划最终选择最佳决策的过程。 优化器的主要功能
1. 将多Multiple join 合并为一个Muti-way join
2. 对join、group-by和自定义的MapReduce操作重新进行划分。
3. 消减不必要的列。
4. 在表的扫描操作中推行使用断言。
5. 对于已分区的表消减不必要的分区。
6. 在抽样查询中消减不必要的桶。
7. 优化器还增加了局部聚合操作用于处理大分组聚合和增加再分区操作用于处理不对称的分组聚合。 Hive的数据类型 注意
1. 原子数据类型是可以进行隐式的转换的例如tinyInt类型会自动转为Int类型但是不能由int自动转为tinyInt类型。
2. 所有的整数类型、Float和String类型都可以转换为Double类型。
3. TinyInt、SmallInt、Int都可以转为Float类型。
4. Boolean 类型不可以转换为其他的任何类型。
5. 可以通过使用Cast操作显示的进行数据转换例如Cast(1 as int);将字符串转为整型如果强制转换失败如Cast(X as int);表达式返回的是NULL; Hive的特点