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

目录

连接HBase

连接HBase并查看版本

帮助命令

查看服务器状态

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

命名空间

列出所有命名空间

新建命名空间

删除命名空间

修改命名空间

创建表

列举表

表结构

查询表

添加数据

更新数据

检查插入情况.

表扫描

按照条件查询 

获取某一行

统计表数据行数

删除数据

禁用表

 禁用表

清空表

启用表

 启用表

变更表信息

添加列簇

删除列簇 

 修改版本信息

删除表

用户权限

退出


 

5eb19a777a14463f91ee303de6bb6a31.png

文档: 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

 

 

<think>好的,我现在需要帮助用户了解HBase相关的命令列表及用法。首先,用户明确提到了HBase命令,并且引用了多个相关的资料,我需要仔细查看这些引用内容,提取有用的信息来构建回答。 首先,引用[1]提到HBase Shell是官方提供的命令集,用户可以通过环境变量配置后,在命令行输入hbase shell进入。这是一个重要的起点,需要首先说明如何启动HBase Shell。引用[2]和[3]进一步补充了HBase的基本概念和操作模式,比如单机、伪分布式和完分布式模式,这可能对用户理解命令的使用环境有帮助,但用户主要关注的是命令列表,所以可能需要简要提及环境。 接下来,引用[3]详细列出了基本操作、DML操作以及删除与版本管理的内容。基本操作包括启动HBase、命名空间操作和表操作命令。DML部分涉及数据写入和读取。引用[4]和[5]提供了更多具体的命令,例如查看表列表使用!tables,以及列出命名空间下的表list_namespace_tables。这些具体的命令需要分类整理,方便用户查找。 用户的需求是命令列表及用法,因此我需要将命令按功能分类,比如基本命令、命名空间管理、表操作、数据操作(DML)、删除与版本控制等。同时,需要注意每个命令的格式和示例,例如创建命名空间、创建表时需要指定列族等。 需要检查是否有遗漏的命令,比如是否提到了Java API操作,但用户主要关注Shell命令,所以可能不需要深入Java部分。另外,确保每个命令的语法正确,比如使用单引号还是双引号,参数的正确顺序等。 另外,用户提供的引用中有一些重复的信息,需要整合,避免重复。例如,启动HBase在引用[2]和[3]都有提到,但需要统一说明。同时,注意命令的大小写,HBase Shell命令通常使用小写,但某些参数可能需要大写,比如命名空间名称。 最后,按照用户的要求,生成相关问题,这些问题应该围绕HBase命令的扩展使用、优化和应用场景,例如如何优化表结构,如何备份数据等。 现在需要组织这些信息,确保结构清晰,每个部分有明确的标题,命令用代码块表示,符合用户要求的格式。同时,正确引用来源,在适当的位置添加引用标识,如启动HBase Shell的部分引用[^1],创建命名空间引用[^5]等。</think>### HBase 常用命令列表及用法 #### 1. 启动HBase Shell 配置环境变量后,在命令行输入以下命令进入交互式命令行环境: ```bash hbase shell ``` [^1] --- #### 2. 命名空间操作 - **查看所有命名空间** ```hbase list_namespace ``` - **创建命名空间** ```hbase create_namespace 'ns1' ``` - **删除命名空间**(需先删除内部所有表) ```hbase drop_namespace 'ns1' ``` [^5] --- #### 3. 表操作 - **查看所有表** ```hbase list ``` 或 ```hbase !tables # 部分版本支持 ``` [^4] - **创建表**(需指定列族) ```hbase create 'ns1:table1', 'cf1', 'cf2' ``` 其中`ns1`为命名空间,`cf1`为列族名称。 - **查看表结构** ```hbase describe 'ns1:table1' ``` - **删除表**(需先禁用表) ```hbase disable 'ns1:table1' drop 'ns1:table1' ``` --- #### 4. 数据操作(DML) - **写入数据** ```hbase put 'ns1:table1', 'row1', 'cf1:name', 'Alice' ``` 参数依次为:表名、行键、列族:列名、值。 - **读取单行数据** ```hbase get 'ns1:table1', 'row1' ``` - **扫描表数据** ```hbase scan 'ns1:table1' ``` - **按条件扫描**(如限定版本数) ```hbase scan 'ns1:table1', {VERSIONS => 3} ``` [^3] --- #### 5. 删除与版本控制 - **删除特定列数据** ```hbase delete 'ns1:table1', 'row1', 'cf1:name' ``` - **删除整行数据** ```hbase deleteall 'ns1:table1', 'row1' ``` - **查看历史版本数据** HBase默认保存多个版本数据,通过`VERSIONS`参数指定存储的版本数: ```hbase alter 'ns1:table1', {NAME => 'cf1', VERSIONS => 5} ``` --- #### 6. 状态与调试 - **检查集群状态** ```hbase status ``` - **查看表是否启用** ```hbase is_enabled 'ns1:table1' ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

未来在这儿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值