Amazon EMR
Amazon EMR 版本指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

使用 Hive 访问 HBase 表

HBase 和 Apache Hive 是紧密集成的,允许您直接在 HBase 中存储的数据上运行大规模并行处理工作负载。要将 Hive 与 HBase 结合使用,您通常可以在同一个集群上启动它们。不过,您可以在单独的集群上启动 Hive 和 HBase。在不同的集群上单独运行 HBase 和 Hive 可以提高性能,因为这可让每个应用程序更高效地利用集群资源。

以下过程说明如何使用 Hive 连接到集群上的 HBase。

注意

您只能将 Hive 集群连接到单个 HBase 集群。

将 Hive 连接到 HBase

  1. 创建安装了 Hive 和 HBase 的单独集群或创建安装了 HBase 和 Hive 的单个集群。

  2. 如果您使用单独的集群,请修改您的安全组,以便 HBase 和 Hive 端口在这两个主节点之间是开放的。

  3. 使用 SSH 连接到安装了 Hive 的集群的主节点。有关更多信息,请参阅 Amazon EMR 管理指南 中的 使用 SSH 连接到主节点

  4. 使用以下命令启动 Hive 外壳。

    hive
  5. (可选) 如果 HBase 和 Hive 位于同一个集群上,则您无需执行此操作。将 Hive 集群上的 HBase 客户端与包含数据的 HBase 集群连接。在以下示例中,使用 HBase 集群的主节点公有 DNS 名称替换 public-DNS-name,如:ec2-50-19-76-67.compute-1.amazonaws.com.cn

    set hbase.zookeeper.quorum=public-DNS-name;
  6. 继续按需对 HBase 数据运行 Hive 查询或查看下一个过程。

从 Hive 访问 HBase 数据

  • 在 Hive 和 HBase HBase 集群之间建立连接后 (如上一过程所示)。您可以通过在 Hive 中创建外部表访问存储在 HBase 集群上的数据。

    从主节点上的 Hive 提示符中运行时,以下示例创建了一个外部表,此表引用了存储在名为 inputTable 的 HBase 表上的数据。然后,您可以引用 Hive 语句中的 inputTable,查询和修改存储在 HBase 集群上的数据。

    set hbase.zookeeper.quorum=ec2-107-21-163-157.compute-1.amazonaws.com.cn; create external table inputTable (key string, value string) stored by 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' with serdeproperties ("hbase.columns.mapping" = ":key,f1:col1") tblproperties ("hbase.table.name" = "t1"); select count(key) from inputTable ;

有关将 HBase 和 Hive 结合使用的更高级的使用案例和示例,请参阅 AWS 大数据博客文章在 Amazon EMR 上使用 Apache HBase 和 Apache Hive 来结合使用 NoSQL 和大规模并行分析