Hive访问EMR Phoenix数据

在阿里云E-MapReduce(EMR)中,Hive支持通过配置外部表来访问和处理存储在Phoenix系统中的数据。本文通过示例为您介绍,如何使用EMR上的Hive处理EMR Phoenix数据。

前提条件

  • 已创建选择了Hive、HBase、Zookeeper和Phoenix服务的自定义集群(Custom),详情请参见创建集群

    说明 因为当前EMR-4.x和EMR-5.x系列版本未支持Phoenix服务,所以此文档仅适用于EMR-3.x系列版本。
  • 已登录集群,详情请参见登录集群

使用限制

本文档仅适用于EMR-3.x系列版本。

操作步骤

如果已经在Phoenix中创建了表phoenix_hive_create_internal,想通过Hive访问,则可以使用Hive外表的方式与Phoenix中的表建立映射关系,进而通过Hive访问Phoenix中已经存在的表。

  1. 执行以下命令,进入Hive命令行。

    hive
  2. 执行以下命令,在Hive中创建外表,建立与Phoenix表的映射关系。
    create external table ext_table(
      s1 string,
      i1 int,
      f1 float,
      d1 double
    )
    stored by 'org.apache.phoenix.hive.PhoenixStorageHandler'
    tblproperties(
      "phoenix.table.name" = "phoenix_hive_create_internal",
      "phoenix.rowkeys" = "s1, i1",
      "phoenix.column.mapping" = "s1:s1, i1:i1, f1:f1, d1:d1"
    );
  3. 执行以下命令,在Hive中查看Phoenix表的数据。

    select * from ext_table;

    如果可以正常查询数据,说明Hive已经成功访问了Phoenix的数据。

相关文档