使用 Hive 访问HBase表 - Amazon EMR

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

使用 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 的示例,请参阅 AWS 大数据博客文章《Combine No》和 Apache Hive 在亚马逊上使用 Apache SQL 和 Apache HBase Hive 进行大规模并行分析。EMR