Hive 是一个建立在 Hadoop 文件系统上的数据仓库架构,它为数据仓库的管理提供了许多功能,包括数据 ETL(抽取、转换和加载)工具、数据存储管理和大型数据集的查询和分析能力。同时 Hive 还定义了类 SQL 的开发语言,允许用户将结构化的数据文件映射为一张数据库表,并提供简单的 SQL 查询功能。
EMR 中 Hive 安装在路径在 EMR 节点的 /usr/local/service/hive 路径下。
Hive 服务角色
|
HiveServer2 | Hive 的 ThriftServer 服务,用于接收客户端的查询请求并进行 SQL 编译及解析,支持多客户端并发以及身份验证。 一个 EMR 集群可部署多个 HiveServer2,支持拓展至 Router 节点并配置负载均衡。 |
Hive MetaStore | Hive 的元数据服务, 用于维护 Hive Database 和 Hive Table 的元数据信息。该模块的元数据管理能力也被 Spark 、Trino 等引擎所集成。 一个 EMR 集群可部署多个 Hive MetaStore,支持拓展至 Router 节点。 |
Hive Client | Hive 客户端,提供 Beeline、JDBC 等应用驱动,可以向 HiveServer2 提交 SQL 作业。部署 Hive 服务的节点均会进行安装。 |
Hive WebHCat | WebHCat 是为 HCatalog 提供 REST API 的服务,提供 Rest 接口,通过 Rest 执行 Hive 命令,提交 MapReduce 任务。 一个集群内可部署多个 WebHCat,支持拓展至 Router 节点。 |
Hive 内部表与外部表
内部表:Hive 管理内部表的元数据以及表的实际数据,使用 DROP 语法删除内部表的时候,表的元数据及对应的数据都会被删除。创建内部表后会将 HDFS 的文件映射成 Table,然后 Hive 的数据仓库生成对应的目录,EMR 默认的仓库路径为 /usr/hive/warehouse/${tablename},这个路径在 HDFS 上面,其中 ${tablename} 是您创建的表名。
外部表:Hive 中的外部表和内部表很类似,但是其数据不是放在自己表所属的目录中,而是存放到其他地方。这样的好处是如果您要删除这个外部表,此外部表所指向的数据是不会被删除的,它只会删除外部表对应的元数据。
Hive 语法
本页内容是否解决了您的问题?