首先我们要知道hive和hbase整合的时候 实际上数据还是存储在hbase中,hive只是相当于一个访问HBASE的客户端,
在hive里面创建内部表的时候,不要求hbase对应的表已经存在,hive会自动帮hbase创建表
在hive里面创建外部表的时候,hbase对应的表必须已经存在,否则报错
步骤:(网上很多说需要将hbase的包导入到hive中,实际上是不需要的,这里的hive在这里相当与hbase的客户端,直接通过zookeeper去获取hbase的元数据的就可以了,不需要导包的)
1: 在hive的配置文件增加属性:
hbase.zookeeper.quorum
node5,node6,node7
2、在hive中创建临时表
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”);
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”);
实际操作:
1: 启动zookeeper集群 zkServer.sh start start-all.sh start-hbase.sh
2: 在hive中建立内部表并且插入数据
3: 在hbase中插入数据,在hive中查询:
1: 在hive中建立外部表:(要求hbase的表已经存在)
2:再hive中插入数据 并且在hbase中查询
3:在hbase中插入数据,并且在hive中查询: