常出现的可能是版本问题,
我hbase使用的是0.96.x hive使用0.13.1版本
如果版本不对会报错。
将hbase lib下的相关包全部移至hive的lib里面,
如下包:
guava-12.0.1.jar
hbase-client-0.96.1.1-cdh5.0.2.jar
hbase-common-0.96.1.1-cdh5.0.2.jar
hbase-common-0.96.1.1-cdh5.0.2-tests.jar
hbase-protocol-0.96.1.1-cdh5.0.2.jar
hbase-server-0.96.1.1-cdh5.0.2.jar
htrace-core-2.01.jar
zookeeper-3.4.5-cdh5.0.2.jar
还有参数的设置
hive-site.xml
添加属性
hbase.zookeeper.quorum=192.168.8.163,192.168.8.164,192.168.8.165
然后开始写脚本
简单的实现就是hbase有多少个qulifier,就在hive的建表语句里建多少列,
有的人会对qulifier上百或上万列以上无法处理
这里hive支持map<String,String>
即key 是qulifier的数据,value是value 解决了以上难题。
CREATE external TABLE guid_uid_relationship_hbase (value map<string,string>, row_key string)
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES ("hbase.columns.mapping" = "relation:,:key")
TBLPROPERTIES ("hbase.table.name" = "guid_uid_relationship");
其中relation是family名字
即可开始查询
附上查询语句
select * from pms.guid_uid_relationship_hbase where array_contains(map_keys(value),'uid_157754941');
select * from guid_uid_relationship_hbase where value['uid_157754941']=157754941;
over