云计算--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 机器学习 云计算

云计算 --- Shell脚本与Shell编程