Hive和HBase关联

一、建立 Hive 表,关联 HBase 表,插入数据到 Hive 表的同时能够影响 HBase 表

 CREATE TABLE mydatabase.hive_hbase_emp_table(
  rowkey string,
  word string
 )
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES ("hbase.columns.mapping" =":key,f1:word")
TBLPROPERTIES ("hbase.table.name" = "test:table1");

hive建表语句中的字段和后面映射hbase的字段是按照顺序一一对应的。
hbase存在rowkey,即默认存在一个key字段,所以hive中第一个字段为代表rowkey的字符串。
创建完成,插入一条数据,"2021-12-15"为 rowkey,"hello world" 为 f1:word的值。

insert into table mydatabase.hive_hbase_emp_table values("2021-12-15","hello world")

可以同时通过hive和hbase shell 查询到该数据。
数据实际上放在HBase的目录

二、在 HBase 中已经存储了某一张表 test:table2,然后在 Hive 中创建一个外部表来关联该表

1、通过hbase shell 创建 test:table2

hbase(main):003:0> create 'test:table2', {NAME => 'f1', VERSIONS =>5}

2、向hbase表插入一条数据

hbase(main):003:0> put 'recmd:java','2021-12-10','f1:word','rem'

3、创建关联表

CREATE EXTERNAL TABLE mydatabase.relevance_hbase_emp(
  rowkey string,
  word string
 )
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES ("hbase.columns.mapping" =":key,f1:word")
TBLPROPERTIES ("hbase.table.name" = "test:table2");

通过hql查询

hive (default)> select * from mydatabase.relevance_hbase_emp;
原文地址:https://www.cnblogs.com/leimu/p/15691800.html