一、建立 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;