设为首页 加入收藏

TOP

hbase系列-hbase shell操作
2019-05-11 02:33:42 】 浏览:68
Tags:hbase 系列 -hbase shell 操作
版权声明:本文为博主原创,转载请声明出处。 https://blog.csdn.net/weixin_41279060/article/details/78799049
hbase shell操作
1、启动hbase shell
./bin/hbase shell

2、HBase常用命令status, version, table_help和whoami
status
命令返回包括在系统上运行的服务器的细节和系统的状态。
hbase(main):009:0> status

version
该命令返回HBase系统使用的版本。
hbase(main):009:0> version

table_help
此命令将引导如何使用表引用的命令。
hbase(main):02:0> table_help

whoami
该命令返回HBase用户详细信息。如果执行这个命令,返回当前HBase用户
hbase(main):008:0> whoami

3、创建表
可以使用命令创建一个表,在这里必须指定表名和列族名。在HBase shell中创建表的语法如下所示。
create ‘<table name>’,’<column family>’
下面给出的是一个表名为emp的样本模式。它有两个列族:“personal data”和“professional data”
在HBase shell创建该表如下所示。
hbase(main):002:0> create 'emp', 'personal data', ’professional data’
注:列族可以理解为分区,一个表有多个分区,分区的设置有利于加快hbase的查询速度

4、HBase列出表
list是用来列出HBase中所有表的命令。
hbase(main):001:0 > list

5、HBase禁用表
disable
要删除表或改变其设置,首先需要使用 disable 命令关闭表。使用 enable 命令,可以重新启用它。下面给出的语法是用来禁用一个表:
hbase(main):025:0> disable 'emp'

禁用表之后,仍然可以通过 list 和exists命令查看到。无法扫描到它存在,它会给下面的错误。
hbase(main):028:0> scan 'emp'
ROW COLUMN+CELL
ERROR: emp is disabled.

is_disabled
这个命令是用来查看表是否被禁用。
下面的例子验证表名为emp是否被禁用。如果禁用,它会返回true,如果没有,它会返回false。
hbase(main):031:0> is_disabled 'emp'
true
0 row(s) in 0.0440 seconds

disable_all
此命令用于禁用所有匹配给定正则表达式的表。
假设有5个表在HBase,即raja, rajani, rajendra, rajesh 和 raju。下面的代码将禁用所有以 raj 开始的表。
hbase(main):002:0> disable_all 'raj.*'rajarajanirajendrarajeshrajuDisable the above 5 tables (y/n)y5 tables successfully disabled

6、启用表
启用表的语法:
hbase(main):005:0> enable 'emp'

7、HBase表描述
该命令返回表的说明。
hbase(main):006:0> describe 'emp'

8、修改表
alter用于更改现有表的命令。使用此命令可以更改列族的单元,设定最大数量和删除表范围运算符,并从表中删除列家族。

更改列族单元格的最大数目
下面给出的语法来改变列家族单元的最大数目。
hbase> alter 't1', NAME => 'f1', VERSIONS => 5
在下面的例子中,单元的最大数目设置为5。
hbase(main):003:0> alter 'emp', NAME => 'personal data', VERSIONS => 5

表范围运算符
使用alter,可以设置和删除表范围,运算符,如MAX_FILESIZE,READONLY,MEMSTORE_FLUSHSIZE,DEFERRED_LOG_FLUSH等。

设置只读
下面给出的是语法,是用以设置表为只读。
hbase>alter 't1', READONLY(option)
在下面的例子中,我们已经设置表emp为只读。
hbase(main):006:0> alter 'emp', READONLY

删除表范围运算符
也可以删除表范围运算。下面给出的是语法,从emp表中删除“MAX_FILESIZE”。
hbase> alter 't1', METHOD => 'table_att_unset', NAME => 'MAX_FILESIZE'

删除列族
使用alter,也可以删除列族。下面给出的是使用alter删除列族的语法。
hbase> alter ‘ table name ’, ‘delete’ => ‘ column family ’
下面给出的是一个例子,从“emp”表中删除列族。
假设在HBase中有一个employee表。它包含以下数据:
hbase(main):006:0> scan 'employee'
ROW COLUMN+CELL
row1 column=personal:city, timestamp=1418193767, value=hyderabad
row1 column=personal:name, timestamp=1418193806767, value=raju
row1 column=professional:designation, timestamp=1418193767, value=manager
row1 column=professional:salary, timestamp=1418193806767, value=50000
1 row(s) in 0.0160 seconds
现在使用alter命令删除指定的 professional 列族。
hbase(main):007:0> alter 'employee','delete'=>'professional'
现在验证该表中变更后的数据。观察列族“professional”也没有了,因为前面已经被删除了。
hbase(main):003:0> scan 'employee'
ROW COLUMN+CELL
row1 column=personal:city, timestamp=14181936767, value=hyderabad
row1 column=personal:name, timestamp=1418193806767, value=raju
1 row(s) in 0.0830 seconds

9、Exists
可以使用exists命令验证表的存在。下面的示例演示了如何使用这个命令。
hbase(main):024:0> exists 'emp'
Table emp does exist
0 row(s) in 0.0750 seconds
==================================================================
hbase(main):015:0> exists 'student'
Table student does not exist
0 row(s) in 0.0480 seconds

10、删除表
drop
用drop命令可以删除表。在删除一个表之前必须先将其禁用。
hbase(main):018:0> disable 'emp'
0 row(s) in 1.4580 seconds

hbase(main):019:0> drop 'emp'
0 row(s) in 0.3060 seconds
使用exists 命令验证表是否被删除。

hbase(main):020:0> exists 'emp'
Table emp does not exist
0 row(s) in 0.0730 seconds

drop_all
这个命令是用来在给出删除匹配“regex”表。它的语法如下:
hbase> drop_all ‘t.*’
注意:要删除表,则必须先将其禁用。
示例
假设有一些表的名称为raja, rajani, rajendra
所有这些表以字母raj开始。首先使用disable_all命令禁用所有这些表如下所示。
hbase(main):002:0> disable_all 'raj.*'
raja
rajani
rajendra
Disable the above 5 tables (y/n)
y
3 tables successfully disabled
现在,可以使用 drop_all 命令删除它们,如下所示。

hbase(main):018:0> drop_all 'raj.*'
raja
rajani
rajendra
Drop the above 5 tables (y/n)
y
3 tables successfully dropped

11、退出和关闭
可以通过键入exit命令退出shell。
hbase(main):021:0> exit

要停止HBase,浏览进入到HBase主文件夹,然后键入以下命令。
./bin/stop-hbase.sh

12、创建数据
使用put命令,可以插入行到一个表。它的语法如下:
put’<table name>’,’row1’,’<colfamily:colname>’,’<value>’
插入第一行
hbase(main):005:0> put 'emp','1','personal data:name','raju'

13、更新数据
可以使用put命令更新现有的单元格值。按照下面的语法,并注明新值,如下图所示。
put ‘table name’,’rowkey’,'Column family:column name',’new value’

假设HBase中有一个表emp拥有下列数据
hbase(main):003:0> scan 'emp'
ROW COLUMN+CELL
row1 column=personal:name, timestamp=1418051555, value=raju
row1 column=personal:city, timestamp=1418275907, value=Hyderabad

以下命令将更新名为“Raju'员工的城市值为'Delhi'。
hbase(main):002:0> put 'emp','row1','personal:city','Delhi'
更新后的表如下所示,观察这个城市Raju的值已更改为“Delhi”。
hbase(main):003:0> scan 'emp'
ROW COLUMN+CELL
row1 column=personal:name, timestamp=1418035791555, value=raju
row1 column=personal:city, timestamp=1418274645907, value=Delhi

14、读取数据
使用 get 命令,可以同时获取一行数据。它的语法如下:
get ’<table name>’,’rowkey’

15、删除数据
从表删除特定单元格
使用 delete 命令,可以在一个表中删除特定单元格。 delete 命令的语法如下:
delete ‘<table name>’, ‘<rowkey>’, ‘<column name >’, ‘<time stamp>’
下面是一个删除特定单元格和例子。在这里,我们删除salary
hbase(main):006:0> delete 'emp', '1', 'personal data:city',1417521848375

删除表的所有单元格
使用“deleteall”命令,可以删除一行中所有单元格。下面给出是 deleteall 命令的语法。
deleteall ‘<table name>’, ‘<row>’,
这里是使用“deleteall”命令删去 emp 表 row1 的所有单元的一个例子。
hbase(main):007:0> deleteall 'emp','1'

16、扫描
使用 scan 命令可以得到表中的数据。它的语法如下:
scan ‘<table name>’

17、计数和清空表
count
可以使用count命令计算表的行数量。它的语法如下:
count ‘<table name>’

truncate
此命令将禁止删除并重新创建一个表。truncate 的语法如下:
hbase> truncate 'table name'

18、权限
我们可以授予和撤销HBase用户的权限。也有出于安全目的,三个命令:grant, revoke 和 user_permission.。

grant
grant命令授予特定的权限,如读,写,执行和管理表给定一个特定的用户。 grant命令的语法如下:
hbase> grant <user> <permissions> [<table> [<column family> [<column; qualifier>]]
我们可以从RWXCA组,其中给予零个或多个特权给用户
R - 代表读取权限
W - 代表写权限
X - 代表执行权限
C - 代表创建权限
A - 代表管理权限
下面给出是为用户“Tutorialspoint'授予所有权限的例子。
hbase(main):018:0> grant 'Tutorialspoint', 'RWXCA'

revoke
revoke命令用于撤销用户访问表的权限。它的语法如下:
hbase> revoke <user>
下面的代码撤消名为“Tutorialspoint”用户的所有权限。
hbase(main):006:0> revoke 'Tutorialspoint'

user_permission
此命令用于列出特定表的所有权限。 user_permission的语法如下:
hbase>user_permission ‘tablename’
下面的代码列出了“emp”表的所有用户权限。
hbase(main):013:0> user_permission 'emp'

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇异常解决:util.NativeCodeLoader.. 下一篇关于sparkStreaming整合kafka遇到..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目