有奖捉虫:行业应用 & 管理与支持文档专题 HOT
Hive 是一个建立在 Hadoop 文件系统上的数据仓库架构,它为数据仓库的管理提供了许多功能,包括数据 ETL(抽取、转换和加载)工具、数据存储管理和大型数据集的查询和分析能力。同时 Hive 还定义了类 SQL 的开发语言,允许用户将结构化的数据文件映射为一张数据库表,并提供简单的 SQL 查询功能。
EMR 中 Hive 安装在路径在 EMR 节点的 /usr/local/service/hive 路径下。
关于 Hive 更多的介绍,可以参考Apache 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 语法

弹性 MapReduce 中的 Hive 完全兼容开源社区语法,可通过 HiveQL社区语法手册 进行查阅。