前言
每天进行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;

本文介绍了如何在HBase中使用SQL语句进行数据查询、统计和分组操作,包括计数、求和等,并提及了在大数据量场景下优化查询速度的建议,还分享了对框架的重构过程,支持在本地进行HBase操作。
最低0.47元/天 解锁文章
756





