本文主要介紹如何通過Hive訪問Lindorm寬表。
前提條件
寬表引擎為2.4.3及以上版本。
已將用戶端IP地址添加至Lindorm白名單。
已擷取寬表引擎的HBase Java API專用網路串連地址
注意事項
如果您想要通過公網訪問或您的執行個體類型為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的底層檔案,但支援通過關聯或建立外表的方式在Lindorm中讀寫資料。