Alex 的 Hadoop 菜鸟教程: 第7课 Hbase 使用教程
原帖地址: http://blog.csdn.net/nsrainbow/article/details/38758375
声明:
- 本文基于Centos 6.x + CDH 5.x
- 本例中 Hbase 是安装成集群模式的
本文通过建立student表等相关操作,简单介绍一下hbase的shell操作
建立student 表
[root@localhost conf]# hbase shell
2014-08-22 16:10:47,662 INFO [main] Configuration.deprecation: hadoop.native.lib is deprecated. Instead, use io.native.lib.available
HBase Shell; enter 'help<RETURN>' for list of supported commands.
Type "exit<RETURN>" to leave the HBase Shell
Version 0.96.1.1-cdh5.0.1, rUnknown, Tue May 6 13:27:24 PDT 2014
然后用 create建立一个表,我们建立的表有如下属性
什么是列簇?
为什么要有列簇?
hbase(main):001:0> create 'student', 'info'
0 row(s) in 4.3300 seconds=> Hbase::Table - student
增加数据
hbase(main):002:0> put 'student','row1','info:name','jack'
0 row(s) in 0.1990 seconds
意思是往 student 的 name 列中插入一个值 jack
hbase(main):003:0> get 'student','row1','info:name'
COLUMN CELL info:name timestamp=1408697225683, value=jack
1 row(s) in 0.0490 seconds
查出来了。
rowkey
hbase(main):004:0> put 'student','row1','info:sid','1'
0 row(s) in 0.0200 secondshbase(main):005:0> put 'student','row1','info:age','22'
0 row(s) in 0.0210 seconds
然后我们用scan命令查询一下整个表
hbase(main):006:0> scan 'student'
ROW COLUMN+CELL row1 column=info:age, timestamp=1408697651322, value=22 row1 column=info:name, timestamp=1408697225683, value=jack row1 column=info:sid, timestamp=1408697640490, value=1
1 row(s) in 0.0580 seconds
可以看到有三条记录,但是都是一个row里面的,这个row才是相当于mysql的一行
hbase(main):005:0> scan 'student'
ROW COLUMN+CELL row1 column=info:age, timestamp=1420817226790, value=22 row1 column=info:name, timestamp=1420817205836, value=jack row1 column=info:sid, timestamp=1420817219869, value=1 row2 column=info:age, timestamp=1420817278346, value=28 row2 column=info:name, timestamp=1420817252182, value=terry row2 column=info:sid, timestamp=1420817267780, value=2 row3 column=info:age, timestamp=1420817315351, value=18 row3 column=info:name, timestamp=1420817294342, value=billy row3 column=info:sid, timestamp=1420817304621, value=3 row4 column=info:name, timestamp=1420858768667, value=karry row4 column=info:sid, timestamp=1420858794556, value=4
4 row(s) in 1.0990 seconds
命令介绍
scan 查询数据表
Limit 查询后显示的条数
scan 'student',{'LIMIT'=>2}
效果如下
hbase(main):006:0> scan 'student',{'LIMIT'=>2}
ROW COLUMN+CELL row1 column=info:age, timestamp=1420817226790, value=22 row1 column=info:name, timestamp=1420817205836, value=jack row1 column=info:sid, timestamp=1420817219869, value=1 row2 column=info:age, timestamp=1420817278346, value=28 row2 column=info:name, timestamp=1420817252182, value=terry row2 column=info:sid, timestamp=1420817267780, value=2
2 row(s) in 0.8250 seconds
STARTROW 起点rowkey
hbase(main):007:0> scan 'student',{'STARTROW'=>'row2'}
ROW COLUMN+CELL row2 column=info:age, timestamp=1420817278346, value=28 row2 column=info:name, timestamp=1420817252182, value=terry row2 column=info:sid, timestamp=1420817267780, value=2 row3 column=info:age, timestamp=1420817315351, value=18 row3 column=info:name, timestamp=1420817294342, value=billy row3 column=info:sid, timestamp=1420817304621, value=3 row4 column=info:name, timestamp=1420858768667, value=karry row4 column=info:sid, timestamp=1420858794556, value=4
hbase(main):008:0> scan 'student',{'STARTROW'=>'row*'}
ROW COLUMN+CELL row1 column=info:age, timestamp=1420817226790, value=22 row1 column=info:name, timestamp=1420817205836, value=jack row1 column=info:sid, timestamp=1420817219869, value=1 row2 column=info:age, timestamp=1420817278346, value=28 row2 column=info:name, timestamp=1420817252182, value=terry row2 column=info:sid, timestamp=1420817267780, value=2 row3 column=info:age, timestamp=1420817315351, value=18 row3 column=info:name, timestamp=1420817294342, value=billy row3 column=info:sid, timestamp=1420817304621, value=3 row4 column=info:name, timestamp=1420858768667, value=karry row4 column=info:sid, timestamp=1420858794556, value=4
4 row(s) in 0.2830 seconds
多个参数可以同时使用,比如我要查询startrow = row2 并且只返回一条
hbase(main):009:0> scan 'student',{'STARTROW'=>'row2','LIMIT'=>1}
ROW COLUMN+CELL row2 column=info:age, timestamp=1420817278346, value=28 row2 column=info:name, timestamp=1420817252182, value=terry row2 column=info:sid, timestamp=1420817267780, value=2
1 row(s) in 0.1890 seconds
STOPROW 定义查询的结束rowkey
COLUMNS 控制返回的字段列表
hbase(main):011:0> scan 'student',{'COLUMNS'=>['info:name','info:age'],LIMIT=>3}
ROW COLUMN+CELL row1 column=info:age, timestamp=1420817226790, value=22 row1 column=info:name, timestamp=1420817205836, value=jack row2 column=info:age, timestamp=1420817278346, value=28 row2 column=info:name, timestamp=1420817252182, value=terry row3 column=info:age, timestamp=1420817315351, value=18 row3 column=info:name, timestamp=1420817294342, value=billy
3 row(s) in 0.4470 seconds
注意写列名的时候要记得带上列簇!比如 info:name
TIMESTAMP 使用时间来精确定位数据
hbase(main):012:0> scan 'student',{'TIMESTAMP'=>1420817315351}
ROW COLUMN+CELL row3 column=info:age, timestamp=1420817315351, value=18
1 row(s) in 0.1920 seconds
get 获取一行数据
hbase(main):073:0> get 'student','row1'
COLUMN CELL info:age timestamp=1420817226790, value=22 info:name timestamp=1420817205836, value=jack info:sid timestamp=1420817219869, value=1
3 row(s) in 0.1730 seconds
可以跟上更复杂的参数
hbase(main):076:0> get 'student','row1',{COLUMN=>['info:name','info:sid']}
COLUMN CELL info:name timestamp=1420817205836, value=jack info:sid timestamp=1420817219869, value=1
2 row(s) in 0.0490 secondshbase(main):077:0> get 'student','row1',{COLUMN=>['info:name','info:sid'],TIMESTAMP=>1420817219869,VERSION=>1}
COLUMN CELL info:sid timestamp=1420817219869, value=1
1 row(s) in 0.0740 seconds
describe 查看表信息
hbase(main):013:0> describe 'student'
DESCRIPTION ENABLED 'student', {NAME => 'info', DATA_BLOCK_ENCODING => 'NONE', BLOOMFILTER => 'ROW', true REPLICATION_SCOPE => '0', VERSIONS => '1', COMPRESSION => 'NONE', MIN_VERSIONS => '0', TTL => 'FOREVER', KEEP_DELETED_CELLS => 'false', BLOCKSIZE => '65536', I N_MEMORY => 'false', BLOCKCACHE => 'true'}
1 row(s) in 7.6720 seconds
alter 修改表的列簇
alter 'student', {NAME => 'f2', VERSION => 2}
这个VERSION官方说是每个字段可以有2个版本,就是一个行的一个列元素可以存成两个值,拥有不同的version
hbase(main):057:0> describe 'student'
DESCRIPTION ENABLED 'student', {NAME => 'f2', DATA_BLOCK_ENCODING => 'NONE', BLOOMFILTER => 'ROW', R true EPLICATION_SCOPE => '0', COMPRESSION => 'NONE', VERSIONS => '1', TTL => 'FOREVER ', MIN_VERSIONS => '0', KEEP_DELETED_CELLS => 'false', BLOCKSIZE => '65536', IN_ MEMORY => 'false', BLOCKCACHE => 'true'}, {NAME => 'info', DATA_BLOCK_ENCODING = > 'NONE', BLOOMFILTER => 'ROW', REPLICATION_SCOPE => '0', VERSIONS => '1', COMPR ESSION => 'NONE', MIN_VERSIONS => '0', TTL => 'FOREVER', KEEP_DELETED_CELLS => ' false', BLOCKSIZE => '65536', IN_MEMORY => 'false', BLOCKCACHE => 'true'}
1 row(s) in 0.6180 seconds
可以看到有两个列簇,一个是f2,一个是info
用 TTL 控制表的数据自动过期
alter 'student', {NAME => 'f2', TTL => 20}
然后再看下表信息
hbase(main):061:0> describe 'student'
DESCRIPTION ENABLED 'student', {NAME => 'f2', DATA_BLOCK_ENCODING => 'NONE', BLOOMFILTER => 'ROW', R true EPLICATION_SCOPE => '0', COMPRESSION => 'NONE', VERSIONS => '1', TTL => '20 SECO NDS', MIN_VERSIONS => '0', KEEP_DELETED_CELLS => 'false', BLOCKSIZE => '65536', IN_MEMORY => 'false', BLOCKCACHE => 'true'}, {NAME => 'info', DATA_BLOCK_ENCODIN G => 'NONE', BLOOMFILTER => 'ROW', REPLICATION_SCOPE => '0', VERSIONS => '1', CO MPRESSION => 'NONE', MIN_VERSIONS => '0', TTL => 'FOREVER', KEEP_DELETED_CELLS = > 'false', BLOCKSIZE => '65536', IN_MEMORY => 'false', BLOCKCACHE => 'true'}
1 row(s) in 0.1540 seconds
可以看到f2的 TTL 被设置为20 seconds。
hbase(main):065:0> put 'student','row3','f2:grade','2'
0 row(s) in 0.0650 secondshbase(main):066:0> scan 'student',{STARTROW=>'row3',LIMIT=>1}
ROW COLUMN+CELL row3 column=f2:grade, timestamp=1420872179176, value=2 row3 column=info:age, timestamp=1420817315351, value=18 row3 column=info:name, timestamp=1420817294342, value=billy row3 column=info:sid, timestamp=1420817304621, value=3
1 row(s) in 0.0630 secondshbase(main):067:0> scan 'student',{STARTROW=>'row3',LIMIT=>1}
ROW COLUMN+CELL row3 column=info:age, timestamp=1420817315351, value=18 row3 column=info:name, timestamp=1420817294342, value=billy row3 column=info:sid, timestamp=1420817304621, value=3
1 row(s) in 0.1370 seconds
会看到刚添加进去的时候row2还有 f2:grade的数据,但是过了一会儿去看就没了
使用alter删除列簇
hbase(main):068:0> alter 'student', {NAME => 'f2', METHOD=>'delete'}
Updating all regions with the new schema...
0/1 regions updated.
1/1 regions updated.
Done.
0 row(s) in 3.9750 secondshbase(main):069:0> describe 'student'
DESCRIPTION ENABLED 'student', {NAME => 'info', DATA_BLOCK_ENCODING => 'NONE', BLOOMFILTER => 'ROW', true REPLICATION_SCOPE => '0', VERSIONS => '1', COMPRESSION => 'NONE', MIN_VERSIONS => '0', TTL => 'FOREVER', KEEP_DELETED_CELLS => 'false', BLOCKSIZE => '65536', I N_MEMORY => 'false', BLOCKCACHE => 'true'}
1 row(s) in 0.2210 seconds
count 统计表中的数据
hbase(main):082:0> count 'student'
4 row(s) in 0.6410 seconds=> 4
这个命令还有一个很奇怪的功能,就是在统计的时候可以每隔X行显示一下数据的rowkey,可能是方便统计的时候看下统计到哪里了,比如我分别用间隔2行跟间隔1行做了实验
hbase(main):083:0> count 'student',2
Current count: 2, row: row2
Current count: 4, row: row4
4 row(s) in 0.0480 seconds=> 4
hbase(main):084:0> count 'student',1
Current count: 1, row: row1
Current count: 2, row: row2
Current count: 3, row: row3
Current count: 4, row: row4
4 row(s) in 0.0650 seconds=> 4
list 查看数据库中的所有表
hbase(main):079:0> list
TABLE
employee
employee2
student
3 row(s) in 0.2020 seconds=> ["employee", "employee2", "student"]
status 命令
hbase(main):013:0> status
1 servers, 0 dead, 3.0000 average load
hbase(main):070:0> list
TABLE
employee
employee2
student
3 row(s) in 0.6380 seconds=> ["employee", "employee2", "student"]
version
whoami
hbase(main):014:0> whoami
root (auth:SIMPLE)
truncate 快速清除数据
hbase(main):086:0> truncate 'student'
Truncating 'student' table (it may take a while):- Disabling table...- Dropping table...- Creating table...
0 row(s) in 4.6330 seconds
主要的命令就介绍到这里,更详细的命令参考 http://wiki.apache.org/hadoop/Hbase/Shell
参考资料
- http://wiki.apache.org/hadoop/Hbase/Shell
Alex 的 Hadoop 菜鸟教程: 第7课 Hbase 使用教程相关推荐
- Alex 的 Hadoop 菜鸟教程: 第5课 YARN 安装以及helloworld (基于centos的CDH)
原帖地址:http://blog.csdn.net/nsrainbow/article/details/36627675 新老MapReduce的比较 说到YARN肯定要先说下老的MapReduce ...
- Alex 的 Hadoop 菜鸟教程: 第10课 Hive 安装和使用教程
原帖地址: http://blog.csdn.net/nsrainbow/article/details/41748863 最新课程请关注原作者博客 声明 本文基于Centos 6.x + CDH 5 ...
- 破解教程 第十一课 crackme破解教程(用trw2000追注册码)=====破解经典句式篇
依我个人的经验,破解crackme对破解能力的提高很有帮助,11,12,14课将重点介绍 重点是体会破解经典句式(我已用红字标出) 下面给出的地址可能已下载不到,请去破解乐园的练习专页下载 zop.y ...
- c语言程序设计的顺序结构的常用控制语句,C语言程序设计教程-第03课-顺序结构的程序设计.ppt...
<C语言程序设计教程-第03课-顺序结构的程序设计.ppt>由会员分享,可在线阅读,更多相关<C语言程序设计教程-第03课-顺序结构的程序设计.ppt(21页珍藏版)>请在人人 ...
- python2.7教程 pdf_PYTHON基础教程至60课(2.7版本)整理
python 基础教程至 60 课整理 2014 年 7 月 10 日:(整理前几天内容) 1. 疑惑: a. for score in data [1:]: 解答:将 score 一一赋 data ...
- 【源码+教程】Java课设项目_12款最热最新Java游戏项目_Java游戏开发_Java小游戏_飞翔的小鸟_王者荣耀_超级玛丽_推箱子_黄金矿工_贪吃蛇
马上就要期末了,同学们课设做的如何了呢?本篇为大家带来了12款热门Java小游戏项目的源码和教程,助力大家顺利迎接暑假![源码+教程]Java课设项目_12款最热最新Java游戏项目_Java游戏开发 ...
- 怎么上传云班课的计算机作业,云班课怎么交作业_云班课作业提交教程_3DM手游...
是如何在云班课平台中提交作业?很多小伙伴还不太清楚.云班课平台中提交作业的类型有很多中,提交方式也有所不同.下面小编来为大家介绍一下云班课提交作业的详细方法教程,一起来看看. 云班课怎么交作业? 老师 ...
- M3D GIS三维数字沙盘可视化交互地理信息系统开发教程第44课
M3D GIS三维数字沙盘可视化交互地理信息系统开发教程第44课 设置system.ini 如下内容 Server=122.112.229.220 user=GisTest Password=chin ...
- 三维电子沙盘数字沙盘开发教程第3课
三维电子沙盘数字沙盘开发教程第3课 下面介绍矢量图层的控制显示:上代码 foreach(string key in gis3d.SetFile.Biao.Keys)// gis3d.SetFile.B ...
- Bootstrap 教程第四课:制作一组功能图标按钮
上一节内容,我们讲到在Bootstrap中,如何使用文字图标制作带有图标的按钮( Bootstrap教程第三课:制作有图标的按钮),这节课,我们将在上一节的基础上,进行一组功能图标按钮的制作. 我们以 ...
最新文章
- 语言的神经结构: 一体化建模集中于预测处理(附ppt)
- mysql导入分卷_php实现mysql备份恢复分卷处理的方法_PHP
- python包导入细节_python循环导入是一个实现细节吗?
- C# WInForm中 窗体的this.width和this.height的属性值不能大于显示器的最大分辨率
- 40万总奖金!顶级云服务免费用!2021全球高性能云计算创新大赛报名中!
- c语言大作业旋转,c语言大作业全-20210412035629.docx-原创力文档
- Android 四大组件之 Activity
- 利用Nginx+Mono+Fastcgi代替IIS对Asp.Net进行反向代理
- 华为怎么授权位置服务器,华为手机设置位置服务器
- 【优化预测】基于matlab鲸鱼算法优化LSSVM预测【含Matlab源码 104期】
- Visual Studio 2013各个版本下载地址
- 3种常用的图片压缩方法
- 一名爱折腾人士的Apps for iPhone分享
- iOS开发APP瘦身之PDF图片资源加载框架
- 什么是4k视频分辨率
- HDU 6447 YJJ's Salesman(树状数组优化DP + 离散化)
- 【iOS】越狱入门梳理
- linux红外遥控进程,46.Linux-分析rc红外遥控平台驱动框架,修改内核的NEC解码函数BUG(1)...
- @Value读取properties中文乱码解决方案
- truncate()函数
热门文章
- 在CSDN发布付费资源
- Chinapub 100万会员评选出来的2007年IT图书排行榜
- html在电脑上转换字体怎么变了,怎样通过电脑把汉字转换为小篆字体?小篆字体转换器如何使用?...
- 卡巴斯基2006以上版本与金山词霸 的冲突
- VC6.0安装番茄助手
- 1688API接口,item_get_app - 获取1688app上原数据
- 知物由学 | 人工智能、机器学习和深度学习如何在网络安全领域中应用?
- 通达信登录服务器文件夹,我也搞定了通达信交易系统多帐号登录交易!
- 999页阿里P7Java学习笔记在互联网上火了,完整版开放下载
- 软件测试面试之智力题