使用 Hive 访问HBase表 - Amazon EMR
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用 Hive 访问HBase表

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

以下过程说明如何使用 Hiv HBase e 连接到集群。

注意

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

将 Hive 连接到 HBase
  1. 使用并HBase安装了 Hive 创建单独的集群,或者创建一个同时安装了 Hive HBase 和 Hive 的单个集群。

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

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

  4. 通过以下命令启动 Hive shell。

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

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

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

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

    set hbase.zookeeper.quorum=ec2-107-21-163-157.compute-1.amazonaws.com; 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 的示例,请参阅 Amazon 大数据博客文章《Combine No》和 Apache Hive 在亚马逊上使用 Apache SQL 和 Apache HBase Hive 进行大规模并行分析。EMR