只需要在hive的配置文件中加入如下配置即可
<property>
<name>hbase.zookeeper.quorum</name>
<value>node2,node3,node4</value>
</property>
通过zookeeper进行hive与 hbase之间的通信
官网地址
https://cwiki.apache.org/confluence/display/Hive/HBaseIntegration
创建内部表,:key是hbase的rowkey,cf1是对应的hbase的列族,val是列。通过cf1:val确定关联hbase中的哪一列。当hbase中不存在相应的列时,在hive中值为空。hive的列与"hbase.columns.mapping"中的列是一一映射的。当hbase中的表不存在时,在创建hive表时,会自动创建。当删除hive中的表时,hbase中的表也会关联删除
hbase.mapred.output.outputtable指定插入数据时写入的表,如果以后需要往该表插入数据就需要指定该值
CREATE TABLE hbasetbl(key int, value string)
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,cf1:val")
TBLPROPERTIES ("hbase.table.name" = "xyz", "hbase.mapred.output.outputtable" = "xyz");
创建外部表,:key是hbase的rowkey,order是对应的hbase的列族,order_id与user_id是列。通过order:order_id确定关联hbase中的哪一列。当hbase中不存在相应的列时,在hive中值为空。hive的列与"hbase.columns.mapping"中的列是一一映射的。当hbase中对应的数据表不存在时,会创建失败。删除hive中的表时,对应的hbase表不会被删除。
CREATE EXTERNAL TABLE tmp_order
(key string, id string, user_id string)
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,order:order_id,order:user_id")
TBLPROPERTIES ("hbase.table.name" = "t_order");