HBase中使用sql语句查询表中数据记录(绝对原创,转载请注明地址)

前言


       每天进行hbase 的shell操作,极为不便,虽有hive可以进行查询,但是效率之低,时间之慢也非常无奈,于是便想着自己写一些接口可以实现hbase的普通查询、统计、分组等功能,经过近1天的努力,终于完成了一些功能,还在不断完善,希望可以给一些hbase的同行们提供一些方便。

思路


 将开发好的hsql.jar上传到hbase的安装目录下:

[root@hadoop3 hbase-0.90.4-cdh3u3]# ls

bin          docs                           hbase-webapps  logs        src
CHANGES.txt  hbase-0.90.4-cdh3u3.jar        hsql.jar      NOTICE.txt
cloudera     hbase-0.90.4-cdh3u3-tests.jar  lib            pom.xml
conf         hbase-env.sh                   LICENSE.txt    README.txt


然后拷贝文件hsql到hbase的安装目录bin/下:

[root@hadoop3 hbase-0.90.4-cdh3u3]# cd bin
[root@hadoop3 bin]# ls
add_table.rb      hbase-daemon.sh         local-regionservers.sh  rolling-restart.sh
check_meta.rb     hbase-daemons.sh        master-backup.sh        set_meta_block_caching.rb
copy_table.rb     hirb.rb                 region_mover.rb         set_meta_memstore_size.rb
graceful_stop.sh  hsql                   regionservers.sh        start-hbase.sh
hbase             loadtable.rb            rename_table.rb         stop-hbase.sh
hbase-config.sh   local-master-backup.sh  replication             zookeepers.sh


给hsql赋可执行权限:

[root@hadoop3 bin]# chmod 755 hsql
[root@hadoop3 bin]# ll hsql
-rwxr-xr-x 1 root root 0 Jan  8 17:14 hsql


hsql文件内容:

#/bin/sh
sql=$*
echo $sql
hadoop jar ../HbaseSql.jar "$sql"


不好意思,关于hsql.jar暂时不开源,待完善后再考虑。

支持的sql语句类似如下:


1.#号替代*号
select # from item_use_38 where rowkey[20120901,20120901];

2.limit关键字
select # from item_use_38 where rowkey[20120901,20120901] limit 10;

3.多字段

select user,level,amount from item_use_38 where rowkey[20120901,20120901];

4.统计计数


select count(amount) from item_use_38 where rowkey[20120901,20120901];

4.统计求和


select sum(amount) from item_use_38 where rowkey[20120901,20120901];

5.分组计数


select user,level,count(amount) from item_use_38 where rowkey[20120901,20120901] group by user,level;

6.分组求和


select user,level,sum(amount) from item_use_38 where rowkey[20120901,20120901] group by user,level;



1.查询


        目前支持功能:

  •              所有表中字段的*(以#替代)功能;
  •              支持字段间以逗号隔开的操作的;
  •              同时,参考了hive中的limit限制;
  •              也可以不带limit限制;
  •              查询条件目前只能支持rowkey级别。

[root@hadoop9 ~]# hsql 'select # from item_use_38 where rowkey[20120901,20120901] limit 10'

13/01/08 09:33:13 INFO zookeeper.ZooKeeper: Client environment:zookeeper.version=3.3.4-cdh3u3--1, built on 01/26/2012 18:07 GMT
13/01/08 09:33:13 INFO zookeeper.ZooKeeper: Client environment:host.name=hadoop3
13/01/08 09:33:13 INFO zookeeper.ZooKeeper: Client environment:java.version=1.6.0_24
13/01/08 09:33:13 INFO zookeeper.ZooKeeper: Client environment:java.vendor=Sun Microsystems Inc.
13/01/08 09:33:13 INFO zookeeper.ZooKeeper: Client environment:java.home=/home/hadoop/jdk1.6.0_24/jre
===============================
  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值