Hbase基本命令使用

本文介绍了HBase,一个基于Hadoop HDFS的分布式列式存储系统,与Google Bigtable相似。主要内容包括创建、查看、修改表,以及数据的插入、查询、删除等基本操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

HBase – Hadoop Database,是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群。
HBase是Google Bigtable的开源实现,类似Google Bigtable利用GFS作为其文件存储系统,HBase利用Hadoop HDFS作为其文件存储系统;Google运行MapReduce来处理Bigtable中的海量数据,HBase同样利用Hadoop MapReduce来处理HBase中的海量数据;Google Bigtable利用 Chubby作为协同服务,HBase利用Zookeeper作为对应。

1、创建一个User 并且有一个info列

hbase(main):001:0> create 'User','info'
0 row(s) in 2.5350 seconds

=> Hbase::Table - User

2、查看所有表 list

hbase(main):002:0> list
TABLE
COMPANY
STOCK
SYSTEM:CATALOG
SYSTEM:FUNCTION
SYSTEM:LOG
SYSTEM:MUTEX
SYSTEM:SEQUENCE
SYSTEM:STATS
US_POPULATION
User
WOWO
customers
hbase_11
student
14 row(s) in 0.0210 seconds

=> ["COMPANY", "STOCK", "SYSTEM:CATALOG", "SYSTEM:FUNCTION", "SYSTEM:LOG", "SYSTEM:MUTEX", "SYSTEM:SEQUENCE", "SYSTEM:STATS", "US_POPULATION", "User", "WOWO", "customers", "hbase_11", "student"]

3、查看表详情 describe desc

hbase(main):003:0> describe 'User'
Table User is ENABLED
User
COLUMN FAMILIES DESCRIPTION
{NAME => 'info', BLOOMFILTER => 'ROW', VERSIONS => '1', IN_MEMORY => 'false', KEEP_DELETED_CELLS => 'FALSE', DATA_BLOCK_ENCODING => 'NONE'
, TTL => 'FOREVER', COMPRESSION => 'NONE', MIN_VERSIONS => '0', BLOCKCACHE => 'true', BLOCKSIZE => '65536', REPLICATION_SCOPE => '0'}
1 row(s) in 0.1030 seconds


hbase(main):004:0> desc 'User'
Table User is ENABLED
User
COLUMN FAMILIES DESCRIPTION
{NAME => 'info', BLOOMFILTER => 'ROW', VERSIONS => '1', IN_MEMORY => 'false', KEEP_DELETED_CELLS => 'FALSE', DATA_BLOCK_ENCODING => 'NONE'
, TTL => 'FOREVER', COMPRESSION => 'NONE', MIN_VERSIONS => '0', BLOCKCACHE => 'true', BLOCKSIZE => '65536', REPLICATION_SCOPE => '0'}
1 row(s) in 0.0230 seconds

4、表修改 :alter delete

删除指定的列族

hbase(main):002:0> alter 'User', 'delete' => 'info'
Updating all regions with the new schema...
1/1 regions updated.
Done.
0 row(s) in 2.5340 seconds

5.1插入数据 并查看

语法:put ‘table’,‘rowkey’,‘family:column’,‘value’

hbase(main):011:0> put 'User', 'row1', 'info:name', 'zhangsan'
0 row(s) in 0.1100 seconds

hbase(main):012:0> put 'User', 'row2', 'info:age', '20'
0 row(s) in 0.0090 seconds

hbase(main):013:0> put 'User', 'row3', 'info:sex', 'nan'
0 row(s) in 0.0110 seconds

hbase(main):014:0> scan 'User'
ROW                                    COLUMN+CELL
 row1                                  column=info:name, timestamp=1547462939535, value=zhangsan
 row2                                  column=info:age, timestamp=1547462972825, value=20
 row3                                  column=info:sex, timestamp=1547463009547, value=nan
3 row(s) in 0.0510 seconds

  1. 根据rowKey查询某个记录
    语法:get ,,[family:column,…]

hbase(main):015:0> get 'User', 'row3'
COLUMN                                 CELL
 info:sex                              timestamp=1547463009547, value=nan
1 row(s) in 0.0330 seconds

hbase(main):016:0> get 'User', 'row2', 'info:age'
COLUMN                                 CELL
 info:age                              timestamp=1547462972825, value=20
1 row(s) in 0.0140 seconds

hbase(main):017:0> get 'User', 'row1', {COLUMN => 'info:name'}
COLUMN                                 CELL
 info:name                             timestamp=1547462939535, value=zhangsan
1 row(s) in 0.0130 seconds

  1. 扫描所有记录

hbase(main):018:0> scan 'User'
ROW                                    COLUMN+CELL
 row1                                  column=info:name, timestamp=1547462939535, value=zhangsan
 row2                                  column=info:age, timestamp=1547462972825, value=20
 row3                                  column=info:sex, timestamp=1547463009547, value=nan
3 row(s) in 0.0210 seconds

扫描前两条记录


hbase(main):019:0> scan 'User', {LIMIT => 2}
ROW                                    COLUMN+CELL
 row1                                  column=info:name, timestamp=1547462939535, value=zhangsan
 row2                                  column=info:age, timestamp=1547462972825, value=20
2 row(s) in 0.0140 seconds

查询范围


hbase(main):020:0> scan 'User', {STARTROW => 'row2'}
ROW                                    COLUMN+CELL
 row2                                  column=info:age, timestamp=1547462972825, value=20
 row3                                  column=info:sex, timestamp=1547463009547, value=nan
2 row(s) in 0.0150 seconds

hbase(main):021:0> scan 'User', {STARTROW => 'row2', ENDROW => 'row2'}
ROW                                    COLUMN+CELL
 row2                                  column=info:age, timestamp=1547462972825, value=20
1 row(s) in 0.0130 seconds

hbase(main):022:0> scan 'User', {STARTROW => 'row2', ENDROW => 'row3'}
ROW                                    COLUMN+CELL
 row2                                  column=info:age, timestamp=1547462972825, value=20
1 row(s) in 0.0250 seconds

count统计


hbase(main):023:0> count 'User'
3 row(s) in 0.0260 seconds

=> 3

  1. 删除

删除列

hbase(main):024:0> delete 'User', 'row1', 'info:name'
0 row(s) in 0.0300 seconds

删除所有行

hbase(main):027:0> deleteall 'User', 'row2'
0 row(s) in 0.0100 seconds

删除表中所有数据

hbase(main):028:0> truncate 'User'
Truncating 'User' table (it may take a while):
 - Disabling table...
 - Truncating table...
0 row(s) in 3.7780 seconds

6、禁用表

hbase(main):014:0> disable 'User'
0 row(s) in 2.2660 seconds
hbase(main):015:0> describe 'User'
Table User is DISABLED
User
COLUMN FAMILIES DESCRIPTION
{NAME => 'info', BLOOMFILTER => 'ROW', VERSIONS => '1', IN_MEMORY => 'false', KEEP_DELETED_CELLS => 'FALSE', DATA_BLOCK_ENCODING => 'NONE', TTL => 'FORE
VER', COMPRESSION => 'NONE', MIN_VERSIONS => '0', BLOCKCACHE => 'true', BLOCKSIZE => '65536', REPLICATION_SCOPE => '0'}
1 row(s) in 0.0340 seconds

hbase(main):016:0> scan 'User', {STARTROW => 'row2', ENDROW => 'row3'}
ROW                                     COLUMN+CELL

ERROR: User is disabled.

7、启用表

hbase(main):017:0> enable 'User'
0 row(s) in 1.3470 seconds

hbase(main):018:0> describe 'User'
Table User is ENABLED
User
COLUMN FAMILIES DESCRIPTION
{NAME => 'info', BLOOMFILTER => 'ROW', VERSIONS => '1', IN_MEMORY => 'false', KEEP_DELETED_CELLS => 'FALSE', DATA_BLOCK_ENCODING => 'NONE', TTL => 'FORE
VER', COMPRESSION => 'NONE', MIN_VERSIONS => '0', BLOCKCACHE => 'true', BLOCKSIZE => '65536', REPLICATION_SCOPE => '0'}
1 row(s) in 0.0310 seconds

hbase(main):019:0> scan 'User', {STARTROW => 'row2', ENDROW => 'row3'}
ROW                                     COLUMN+CELL
 row2                                   column=info:age, timestamp=1502368069926, value=18
1 row(s) in 0.0280 seconds

8、测试表是否存在

hbase(main):022:0> exists 'User'
Table User does exist
0 row(s) in 0.0150 seconds

hbase(main):023:0> exists 'user'
Table user does not exist
0 row(s) in 0.0110 seconds

hbase(main):024:0> exists user
NameError: undefined local variable or method `user' for #<Object:0x412ebe64>

9、删除表
用drop命令可以删除表。在删除一个表之前必须先将其禁用。

hbase(main):033:0> disable 'User'
0 row(s) in 2.2600 seconds

hbase(main):033:0> drop 'User'
0 row(s) in 2.2600 seconds

hbase(main):037:0> list
TABLE
COMPANY
STOCK
SYSTEM:CATALOG
SYSTEM:FUNCTION
SYSTEM:LOG
SYSTEM:MUTEX
SYSTEM:SEQUENCE
SYSTEM:STATS
US_POPULATION
WOWO
customers
hbase_11
student
13 row(s) in 0.0050 seconds

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值