HBase常用命令(超全超详细)

Posted ws的大数据田地

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HBase常用命令(超全超详细)相关的知识,希望对你有一定的参考价值。

目录

连接HBase

连接HBase并查看版本

帮助命令

查看服务器状态

查看当前数据库中有哪些表

命名空间

列出所有命名空间

新建命名空间

删除命名空间

修改命名空间

创建表

列举表

表结构

查询表

添加数据

更新数据

检查插入情况.

表扫描

按照条件查询 

获取某一行

统计表数据行数

删除数据

禁用表

 禁用表

清空表

启用表

 启用表

变更表信息

添加列簇

删除列簇 

 修改版本信息

删除表

用户权限

退出


文档: https://hbase.apache.org/book.html#getting_started

本节我们将向您展示如何使用 hbase shell CLI 在 HBase 中创建表、在表中插入行、对表执行放置和扫描操作、启用或禁用表以及启动和停止 HBase。

主要讲述了HBase的CRUD等基本DDL和DML操作。

注意:HBase Shell 中的删除键没用,要用【Ctrl+Backspace】,每个命令之后不需要分号(;)结束。

连接HBase

连接HBase并查看版本

$ ./bin/hbase shell
HBase Shell; enter 'help<RETURN>' for list of supported commands.
Type "exit<RETURN>" to leave the HBase Shell
Version: 0.90.0, r1001068, Fri Sep 24 13:55:42 PDT 2010

hbase(main):001:0> version

帮助命令

所有的帮助

hbase(main):001:0> help

指定命令的帮助

hbase(main):001:0> help 'create'

输入 help 然后 <RETURN> 可以看到一列shell命令。这里的帮助很详细,要注意的是表名,行和列需要加引号。

查看服务器状态

  hbase(main):001:0> status

查看当前数据库中有哪些表

hbase(main):002:0> list

命名空间

列出所有命名空间

hbase(main):002:0> list_namespace

新建命名空间

hbase(main):002:0> create_namespace 'ns1'

删除命名空间

hbase(main):002:0> drop_namespace 'ns1'

该命名空间必须为空,否则系统不让删除。

修改命名空间

hbase> alter_namespace 'ns', METHOD => 'set', 'PROPERTY_NAME' => 'PROPERTY_VALUE'

创建表

创建一个名为 test 的表,这个表只有一个 列族 为 cf。可以列出所有的表来检查创建情况,然后插入些值。

hbase(main):003:0> create 'test', 'cf'
0 row(s) in 1.2200 seconds
hbase(main):003:0> list 'table'
test
1 row(s) in 0.0550 seconds
hbase(main):004:0> put 'test', 'row1', 'cf:a', 'value1'
0 row(s) in 0.0560 seconds
hbase(main):005:0> put 'test', 'row2', 'cf:b', 'value2'
0 row(s) in 0.0370 seconds
hbase(main):006:0> put 'test', 'row3', 'cf:c', 'value3'
0 row(s) in 0.0450 seconds

以上我们分别插入了3行。第一个行key为row1, 列为 cf:a, 值是 value1。HBase中的列是由 列族前缀和列的名字组成的,以冒号间隔。例如这一行的列名就是a.

列举表

列出指定命名空间下的所有表

hbase> list_namespace_tables 'ns1'

列出所有表

hbase> list

表结构

查看表里面有哪些字段。

hbase(main):003:0> describe 'test'
Table test is ENABLED
test
COLUMN FAMILIES DESCRIPTION
NAME => 'cf', VERSIONS => '1', EVICT_BLOCKS_ON_CLOSE => 'false', NEW_VERSION_BEHAVIOR => 'false', KEEP_DELETED_CELLS => 'FALSE', CACHE_DATA_ON_WRITE =>
'false', DATA_BLOCK_ENCODING => 'NONE', TTL => 'FOREVER', MIN_VERSIONS => '0', REPLICATION_SCOPE => '0', BLOOMFILTER => 'ROW', CACHE_INDEX_ON_WRITE => 'f
alse', IN_MEMORY => 'false', CACHE_BLOOMS_ON_WRITE => 'false', PREFETCH_BLOCKS_ON_OPEN => 'false', COMPRESSION => 'NONE', BLOCKCACHE => 'true', BLOCKSIZE
 => '65536'
1 row(s)
Took 0.9998 seconds

查询表

查询表是否存在

语法:exists ‘table_name’

hbase(main):005:0> exists 'test'

添加数据

hbase(main):003:0> put 'test', 'row1', 'cf:a', 'value1'
0 row(s) in 0.0850 seconds

hbase(main):004:0> put 'test', 'row2', 'cf:b', 'value2'
0 row(s) in 0.0110 seconds

hbase(main):005:0> put 'test', 'row3', 'cf:c', 'value3'
0 row(s) in 0.0100 seconds

更新数据

hbase(main):005:0> put 'test', 'row3', 'cf:c', 'value4'
0 row(s) in 0.0100 seconds

表查询

语法:scan ‘table_name’,COLUMNS => [ ‘column_family:column’,… ], LIMIT => num

全表Scan操作如下:

hbase(main):007:0> scan 'test'
ROW        COLUMN+CELL
row1       column=cf:a, timestamp=1288380727188, value=value1
row2       column=cf:b, timestamp=1288380738440, value=value2
row3       column=cf:c, timestamp=1288380747365, value=value3
3 row(s) in 0.0590 seconds

 扫描表scan,cf:a的前2条数据

  hbase(main):004:0> scan 'test',COLUMNS => 'cf:a',LIMIT => 2

按照条件查询 

查询前几条数据
scan 'test',LIMIT=>5
#查询从指定行到结束行
hbase(main):009:0> scan 'test',STARTROW => '1001', STOPROW  => '1001'
#查询从指定行开始五条
hbase(main):010:0> scan 'test',STARTROW => '1001',LIMIT=>5

获取某一行

get一行,操作如下

hbase(main):008:0> get 'test', 'row1'
COLUMN      CELL
cf:a        timestamp=1288380727188, value=value1
1 row(s) in 0.0400 seconds

查看“指定行”或“指定列族:列”的数据 

hbase(main):008:0> get 'test', 'row1','cf:a'
COLUMN      CELL
cf:a        timestamp=1288380727188, value=value1
1 row(s) in 0.0400 seconds

通过versions来获取多个版本的数据

hbase(main):019:0> get 'test','1001',COLUMN=>'cf:a',VERSIONS => 2

统计表数据行数

hbase(main):021:0> count 'test'

删除数据

  •         删除某rowkey的全部数据:
hbase(main):016:0> deleteall 'test','1001'
  •         删除某rowkey的某一列数据: 
hbase(main):008:0> delete 'test', 'row1','cf:a'

禁用表

判断表是否禁用

语法:is_disabled ‘table_name’

示例:判断test表是否禁用

  hbase(main):026:0> is_disabled 'test'

 禁用表

hbase(main):012:0> disable 'test'
0 row(s) in 1.0930 seconds

清空表

hbase(main):018:0> truncate 'test'
提示:清空表的操作顺序为先disable,然后再truncate。

启用表

判断表是否启用

语法:is_enabled ‘table_name’
示例:判断test表是否启用

  hbase(main):005:0> is_enabled 'test'

 启用表

hbase(main):009:0> enable 'test'
0 row(s) in 0.1770 seconds

变更表信息

添加列簇

命令格式:alter ‘表名’,‘列簇名’

alter 'test','cf1'

删除列簇 

语法:alter ‘table_name’, NAME => ‘column_family1’, METHOD => ‘delete’
示例:将表test中的列簇cf删除

  hbase(main):016:0> alter 'test',NAME => 'cf',METHOD => 'delete'

 修改版本信息

将cf列族中的数据存放3个版本:

hbase(main):022:0> alter 'test',NAME=>'cf',VERSIONS=>3
 
hbase(main):022:0> get 'test','1001',COLUMN=>'cf:a',VERSIONS=>3

查看是否处理成功:

  hbase(main):017:0> describe 'test'

删除表

disable 再 drop 这张表,可以清除你刚刚的操作

hbase(main):013:0> drop 'test'
0 row(s) in 0.0770 seconds 

用户权限

user_permission ['表名'..]
grant '用户名' ,'RWXCA'
R - represents read privilege.
W - represents write privilege.
X - represents execute privilege.
C - represents create privilege.
A - represents admin privilege.

退出Shell

hbase(main):014:0> exit

以上是关于HBase常用命令(超全超详细)的主要内容,如果未能解决你的问题,请参考以下文章

2021年超全超详细的最新大数据开发面试题,附答案解析

实用工具tcpingping & tcping的区别,使用命令,超全超详细使用手册(建议收藏)

Linux&网络安全Linux操作系统安全配置(超全超详细)

select超全超详细总结篇

超全超详细!一文详解容器网络发展

超全超详细,常见SQL 面试知识点汇总