使用impala/hive查询hbase数据

本文介绍如何通过Hive查询HBase中的数据,包括创建HBase表、使用Hive外部表连接HBase以及常见问题排查。具体步骤涵盖在HBase中创建表并插入数据、在Hive中创建外部表来映射HBase表结构,并展示了查询结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

之前做过hadoop的测试,测试了hive/impalahbase数据的查询,这里以hive为例,impala查询hbase数据也类似

hbase访问方式

NativeJAVAAPI

最常规的高效访问方式

HbaseShell

Hbase的命令行供,以JRuby接口,最简单接入,适合HBase管理

ThriftGateway

利用Thrift序列号技术,支持C++/PHP/Python等多种语言,适合其他异构系统在线访问Hbase数据

RESTGateway

支持REST风格的HTTPAPI访问HBase,无语言限制

MapReduce

直接使用MapReduce作业处理Hbase数据,使用Pig/Hive处理HBase数据

这里,hive查询hbase数据就是通过MapReduce访问方式。


hive查询hbase数据

1、创建Hbase表和插入记录

$hbaseshell

hbase(main):001:0>create'test','cf'

hbase(main):002:0>put'test','row1','cf:a','value1a'

hbase(main):003:0>put'test','row1','cf:b','value1b'

hbase(main):004:0>put'test','row2','cf:a','value2a'

hbase(main):005:0>put'test','row2','cf:b','value2b'

2、创建Hive外部表

$hive

hive>CREATEEXTERNALTABLEhbase_test(keystring,astring,bstring)

>ROWFORMATSERDE'org.apache.hadoop.hive.hbase.HBaseSerDe'

>STOREDBY'org.apache.hadoop.hive.hbase.HBaseStorageHandler'

>WITHSERDEPROPERTIES("hbase.columns.mapping"=":key,cf:a,cf:b")

>TBLPROPERTIES("hbase.table.name"="test");

OK

Timetaken:0.201seconds

3Hive下查询hbase表数据

hive>select*fromhbase_test;

OK

row1value1avalue1b

row2value2avalue2b

Timetaken:0.219seconds,Fetched:2row(s)

hive无法查询hbase原因

1hdfs权限问题

当前用户在hive下要有权值执行MapReduce操作,最简单的检查方式是执行“select*fromtestwhere1;”这种带where子句查询。

权限不足会报这个错误:

Permissiondenied:user=root,access=READ,inode="/user"

解决办法:

sudo-uhdfshadoopfs-chmod-R777/user

2、扩展表字段问题

hive表字段要和hbase列记录字段要对应,支持stringint等类型,hive会做格式转换


参考:http://blog.youkuaiyun.com/mycwq/article/details/39518897

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值