云计算--hbase shell
Posted 悉宇馨
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了云计算--hbase shell相关的知识,希望对你有一定的参考价值。
具体的 HBase Shell 命令如下表 1.1-1 所示:
下面我们将以“一个学生成绩表”的例子来详细介绍常用的 HBase 命令及其使用方法。
这里 grad 对于表来说是一个列,course 对于表来说是一个列族,这个列族由三个列组成 china、math 和 english,当然我们可以根据我们的需要在 course 中建立更多的列族,如computer,physics 等相应的列添加入 course 列族。(备注:列族下面的列也是可以没有名字的。)
1). create 命令
创建一个具有两个列族“grad”和“course”的表“scores”。其中表名、行和列都要用单引号括起来,并以逗号隔开。
hbase(main):012:0> create \'scores\', \'name\', \'grad\', \'course\'
2). list 命令
查看当前 HBase 中具有哪些表。
hbase(main):012:0> list
3). describe 命令
查看表“scores”的构造。
hbase(main):012:0> describe \'scores\'
4). put 命令
使用 put 命令向表中插入数据,参数分别为表名、行名、列名和值,其中列名前需要列族最为前缀,时间戳由系统自动生成。
格式: put 表名,行名,列名([列族:列名]),值
例子:
a. 加入一行数据,行名称为“xiapi”,列族“grad”的列名为”(空字符串)”,值位 1。
hbase(main):012:0> put \'scores\', \'xiapi\', \'grad:\', \'1\'
hbase(main):012:0> put \'scores\', \'xiapi\', \'grad:\', \'2\' --修改操作(update)
b. 给“xiapi”这一行的数据的列族“course”添加一列“<china,97>”。
hbase(main):012:0> put \'scores\', \'xiapi\', \'course:china\', \'97\'
hbase(main):012:0> put \'scores\', \'xiapi\', \'course:math\', \'128\'
hbase(main):012:0> put \'scores\', \'xiapi\', \'course:english\', \'85\'
5). get 命令
a.查看表“scores”中的行“xiapi”的相关数据。
hbase(main):012:0> get \'scores\', \'xiapi\'
b.查看表“scores”中行“xiapi”列“course :math”的值。
hbase(main):012:0> get \'scores\', \'xiapi\', \'course :math\'
或者
hbase(main):012:0> get \'scores\', \'xiapi\', {COLUMN=>\'course:math\'}
hbase(main):012:0> get \'scores\', \'xiapi\', {COLUMNS=>\'course:math\'}
备注:COLUMN 和 COLUMNS 是不同的,scan 操作中的 COLUMNS 指定的是表的列族, get操作中的 COLUMN 指定的是特定的列,COLUMNS 的值实质上为“列族:列修饰符”。COLUMN 和 COLUMNS 必须为大写。
6). scan 命令
a. 查看表“scores”中的所有数据。
hbase(main):012:0> scan \'scores\'
注意:
scan 命令可以指定 startrow,stoprow 来 scan 多个 row。
例如:
scan \'user_test\',{COLUMNS =>\'info:username\',LIMIT =>10, STARTROW => \'test\', STOPROW=>\'test2\'}
b.查看表“scores”中列族“course”的所有数据。
hbase(main):012:0> scan \'scores\', {COLUMN => \'grad\'}
hbase(main):012:0> scan \'scores\', {COLUMN=>\'course:math\'}
hbase(main):012:0> scan \'scores\', {COLUMNS => \'course\'}
hbase(main):012:0> scan \'scores\', {COLUMNS => \'course\'}
7). count 命令
hbase(main):068:0> count \'scores\'
8). exists 命令
hbase(main):071:0> exists \'scores\'
9). incr 命令(赋值)
10). delete 命令
删除表“scores”中行为“xiaoxue”, 列族“course”中的“math”。
hbase(main):012:0> delete \'scores\', \'xiapi\', \'course:math\'
11). truncate 命令
hbase(main):012:0> truncate \'scores\'
12). disbale、drop 命令
通过“disable”和“drop”命令删除“scores”表。
hbase(main):012:0> disable \'scores\' --enable \'scores\'
hbase(main):012:0> drop \'scores\'
13). status命令
hbase(main):072:0> status
14). version命令
hbase(main):073:0> version
另外,在 shell 中,常量不需要用引号引起来,但二进制的值需要双引号引起来,而其他值则用单引号引起来。HBase Shell 的常量可以通过在 shell 中输入“Object.constants”。
下面我们看看Hbase Shell的一些基本操作命令,我列出了几个常用的hbase Shell命令,如下:
名称 |
命令表达式 |
创建表 |
create \'表名称\', \'列名称1\',\'列名称2\',\'列名称N\' |
添加记录 |
put \'表名称\', \'行名称\', \'列名称:\', \'值\' |
查看记录 |
get \'表名称\', \'行名称\' |
查看表中的记录总数 |
count \'表名称\' |
删除记录 |
delete \'表名\' ,\'行名称\' , \'列名称\' |
删除一张表 |
先要屏蔽该表,才能对该表进行删除,第一步 disable \'表名称\' 第二步 drop \'表名称\' |
查看所有记录 |
scan "表名称" |
查看某个表某个列中所有数据 |
scan "表名称" , [\'列名称:\'] |
更新记录 |
就是重写一遍进行覆盖 |
1.创建一个表
hbase(main):011:0>create \'member\',\'member_id\',\'address\',\'info\'
2.获得表的描述
hbase(main):012:0>list
3.删除一个列族,alter,disable,enable
我们之前建了3个列族,但是发现member_id这个列族是多余的,因为他就是主键,所以我们要将其删除。
hbase(main):003:0>alter \'member\',{NAME=>\'member_id\',METHOD=>\'delete\'}
ERROR: Table memberis enabled. Disable it first before altering.
报错,删除列族的时候必须先将表给disable掉。
hbase(main):004:0>disable \'member\'
该列族已经删除,我们继续将表enable
hbase(main):008:0> enable \'member\'
4.列出所有的表
hbase(main):028:0>list
5.drop一个表
hbase(main):029:0>disable \'temp_table\'
6.查询表是否存在
hbase(main):021:0>exists \'member\'
7.判断表是否enable
hbase(main):034:0>is_enabled \'member\'
8.判断表是否disable
hbase(main):032:0>is_disabled \'member\'
1.插入几条记录
put\'member\',\'scutshuxue\',\'info:age\',\'24\'
put\'member\',\'scutshuxue\',\'info:birthday\',\'1987-06-17\'
put\'member\',\'scutshuxue\',\'info:company\',\'alibaba\'
put\'member\',\'scutshuxue\',\'address:contry\',\'china\'
put\'member\',\'scutshuxue\',\'address:province\',\'zhejiang\'
put\'member\',\'scutshuxue\',\'address:city\',\'hangzhou\'
2.获取一条数据
获取一个id的所有数据
hbase(main):001:0>get \'member\',\'scutshuxue\'
获取一个id,一个列族的所有数据
hbase(main):002:0>get \'member\',\'scutshuxue\',\'info\'
获取一个id,一个列族中一个列的所有数据
hbase(main):002:0>get \'member\',\'scutshuxue\',\'info:age\'
6.更新一条记录
将scutshuxue的年龄改成99
hbase(main):004:0>put \'member\',\'scutshuxue\',\'info:age\' ,\'99\'
4.全表扫描:
hbase(main):013:0>scan \'member\'
5.删除id为temp的值的‘info:age’字段
hbase(main):016:0>delete \'member\',\'temp\',\'info:age\'
6.删除整行
hbase(main):001:0>deleteall \'member\',\'xiaofeng\'
7.查询表中有多少行:
hbase(main):019:0>count \'member\'
8.给‘xiaofeng’这个id增加\'info:age\'字段,并使用counter实现递增
hbase(main):057:0*incr \'member\',\'xiaofeng\',\'info:age\'
hbase(main):058:0>get \'member\',\'xiaofeng\',\'info:age\'
hbase(main):059:0>incr \'member\',\'xiaofeng\',\'info:age\'
hbase(main):060:0>get \'member\',\'xiaofeng\',\'info:age\'
获取当前count的值
hbase(main):069:0>get_counter \'member\',\'xiaofeng\',\'info:age\'
9.将整张表清空:
hbase(main):035:0>truncate \'member\'
Truncating \'member\'table (it may take a while):
- Disabling table...
- Dropping table...
- Creating table...
0 row(s) in 4.3430seconds
可以看出,hbase是先将掉disable掉,然后drop掉后重建表来实现truncate的功能的。
转载自http://www.cnblogs.com/linjiqin/archive/2013/03/08/2949339.html和http://blog.csdn.net/scutshuxue/article/details/6988348
以上是关于云计算--hbase shell的主要内容,如果未能解决你的问题,请参考以下文章
HBase集群搭建记录 | 云计算[CentOS7] | Maven项目访问HBase
HBase集群搭建记录 | 云计算[CentOS7] | HBase完全分布式集群搭建
大数据架构开发 挖掘分析 Hadoop HBase Hive Storm Spark ZooKeeper Redis MongoDB 机器学习 云计算