Hive支持通过内表或外表两种方式访问E-MapReduce(简称EMR)HBase数据。本文通过示例为您介绍,如何使用EMR上的Hive处理EMR HBase数据。
前提条件
Hive通过内表访问HBase
如果HBase中没有已经创建好的表,则可以在Hive中创建表,Hive会自动把表结构和数据写入到HBase中。本示例是在Hive中新建表访问HBase。
Hive通过外表访问HBase
如果已经在HBase中创建了表,想通过Hive访问,则可以使用Hive外表的方式与HBase中的表建立映射关系,进而通过Hive访问HBase中已经存在的表。
EMR HBase开启kerberos
如果EMR HBase开启了kerberos,Hive关联HBase表并进行查询时,则需要设置kerberos相关参数,设置方式有以下两种:
- Hive命令行设置
set hbase.security.authentication=kerberos; set hbase.master.kerberos.principal=hbase/_HOST@EMR.${CLUSTER_ID}.COM; set hbase.regionserver.kerberos.principal=hbase/_HOST@EMR.${CLUSTER_ID}.COM; set hbase.zookeeper.quorum=master-1-1;
- 环境变量设置
env HIVE_OPTS="-hiveconf hbase.security.authentication=kerberos -hiveconf hbase.master.kerberos.principal=hbase/_HOST@EMR.${CLUSTER_ID}.COM -hiveconf hbase.regionserver.kerberos.principal=hbase/_HOST@EMR.${CLUSTER_ID}.COM -hiveconf hbase.zookeeper.quorum=master-1-1" hive
说明
${CLUSTER_ID}
获取方式,可以登录集群节点,执行hostname
命令,命令返回值中'.'后以'c-'开头到结尾的字符串转换为大写即可。