hive 读取查询 hbase 数据

常出现的可能是版本问题,

我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

猜你喜欢

转载自xiangjinqi.iteye.com/blog/2146655