本文主要介绍如何通过Hive访问Lindorm宽表。
前提条件
注意事项
- 如果您想要通过公网访问或您的实例类型为Lindorm单节点,在执行本文操作前,需要先升级SDK并更改配置。具体操作,请参见通过HBase Java API连接并使用宽表引擎章节中的步骤1。
- 如果应用部署在ECS实例,通过专有网络访问Lindorm实例前,需要确保Lindorm实例和ECS实例满足以下条件,以保证网络的连通性。
- 所在地域相同,并建议所在可用区相同(以减少网络延时)。
- ECS实例与Lindorm实例属于同一专有网络。
在Hive中配置连接参数
方式一:在hive-site.xml配置文件中添加访问配置。
<configuration>
<property>
<name>hbase.zookeeper.quorum</name>
<!--
宽表引擎的HBase Java API专有网络连接地址
-->
<value>ld-bp1461s38p7y9****-proxy-lindorm.lindorm.rds.aliyuncs.com:30020</value>
</property>
</configuration>
方式二:在Hive Client中用命令的方式配置。
// 宽表引擎的HBase Java API专有网络连接地址
set hbase.zookeeper.quorum=ld-bp1461s38p7y9****-proxy-lindorm.lindorm.rds.aliyuncs.com:30020
操作步骤
- 在Hive Client中设置需要访问的Lindorm实例的连接地址。
hive // 宽表引擎的HBase Java API专有网络连接地址 set hbase.zookeeper.quorum=ld-bp1461s38p7y9****-proxy-lindorm.lindorm.rds.aliyuncs.com:30020
- 在Lindorm中创建表hive_hbase_table。
CREATE 'hive_hbase_table','cf1'
- 在Hive中创建外表。
CREATE EXTERNAL TABLE hive_hbase_table(key int, value string) STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,cf1:val") TBLPROPERTIES ("hbase.table.name" = "hive_hbase_table", "hbase.mapred.output.outputtable" = "hive_hbase_table");
返回结果显示OK,表示创建成功。
- 插入数据并查看是否插入成功。
- 在Hive中往外表插入数据,并在Lindorm中查看数据是否插入成功。
插入数据:
insert into hive_hbase_table values(212,'bab');
在Lindorm中查看数据是否插入成功:scan 'hive_hbase_table'
返回结果如下:ROW COLUMN+CELL 212 column=cf1:val, timestamp=2023-03-13T15:35:10.270, value=bab
- 在Lindorm中往表hive_hbase_table中插入数据,并在Hive中查看数据是否插入成功。插入数据:
put 'hive_hbase_table','213','cf1:val','dadsadasda'
在Hive中查看数据是否插入成功。SELECT * FROM hive_hbase_table;
返回结果如下:212 bab 213 dadsadasda
- 在Hive中往外表插入数据,并在Lindorm中查看数据是否插入成功。
重要 目前暂不支持通过Hive直接读取Lindorm的底层文件,但支持通过关联或创建外表的方式在Lindorm中读写数据。