hbase shell删除一行_HBase Shell操作命令

本文介绍了如何使用HBase Shell进行基本操作,包括配置HBase,创建表,插入数据,读取数据以及删除数据。通过示例展示了put、scan、get和drop等命令的用法。
摘要由CSDN通过智能技术生成

HBase单机配置(官网):

解压缩,然后进入到那个要解压的目录.

$ tar xfz hbase-××××.tar.gz

$ cd hbase-×××××

现在你已经可以启动HBase了。但是你可能需要先编辑 conf/hbase-site.xml 去配置hbase.rootdir,来选择HBase将数据写到哪个目录 .

hbase.rootdir

file:///DIRECTORY/hbase

将 DIRECTORY 替换成你期望写文件的目录. 默认 hbase.rootdir 是指向 /tmp/hbase-${user.name} ,也就说你会在重启后丢失数据(重启的时候操作系统会清理/tmp目录)

1.创建表

同其它数据库一样,hbase也有表的概念。

hbase(main):001:0> create 'test','cf'

0 row(s) in 1.5210 seconds

=> Hbase::Table - test

这张表的表名叫做test , 有一个列族叫做cf

(注意shell中所有的名字都必须用引号引起来,和传统数据库不同的是,HBASE的表不用定义有哪些列(字段,Column),因为列是可以动态增加和删除的。但Hbase表需要定义列族(column family).每张表有一个或者多个列族,每个列必须且仅属于一个列族。列族主要用来存储上对相关的列分组,从而使得减少对无关列的访问来提高性能。)

下面看看这张表是什么(describe命令)

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

Table test is ENABLED

test

COLUMN FAMILIES DESCRIPTION

{NAME => 'cf', BLOOMFILTER => 'ROW', VERSIONS => '1', IN_MEMORY => 'false', KEEP

_DELETED_CELLS => 'FALSE', DATA_BLOCK_ENCODING => 'NONE', TTL => 'FOREVER', COMP

RESSION => 'NONE', MIN_VERSIONS => '0', BLOCKCACHE => 'true', BLOCKSIZE => '6553

6', REPLICATION_SCOPE => '0'}

1 row(s) in 0.1610 seconds

可以看到HBase给这张表设置了很多默认的属性。

Version:缺省值是3,即默认保存了三个历史版本。就是说,如果一个值被覆盖了,和传统数据库不同,HBase不仅保存了新值,最近的2个值也都相同。

TTL:生存期,一个数据在HBase中被保存的时限。意思是,如果你设置TTL是俩天的话,那么俩天后这个数据会被HBase自动的清楚。如果你希望永久的保存,那把TTL设置到做大就好。

2.插入数据

往表test里插入一些数据:

hbase(main):004:0> put 'test','row1','cf:a','value1'

0 row(s) in 0.1330 seconds

hbase(main):005:0> put 'test','row2','cf:b','value2'

0 row(s) in 0.0150 seconds

hbase(main):006:0> put 'test','row3','cf:c','value3'

0 row(s) in 0.0130 seconds

hbase(main):007:0> put 'test','row1','cf:c','value4'

0 row(s) in 0.0100 seconds

hbase(main):008:0> put 'test','row1','cf:c','value4'

0 row(s) in 0.0100 seconds

hbase(main):009:0> put 'test','row1','cf:c','value4'

0 row(s) in 0.0100 seconds

上面的命令往表test里放了3行数据。命令put就是往表中插入或者更新一条数据。HBase表中的每一行数据都由一个行主键来标识,所以我们用row1,row2这样的字符串来标识相应的行。每一行由“列族:列名”这样的组合来标识,所以cf:a就是在列族cf中名为a的列。命令的最后一个参数是该列的值。

3.读出数据

下面读出所有数据

hbase(main):010:0> scan 'test'

ROW COLUMN+CELL

row1 column=cf:a, timestamp=1499600631906, value=value1

row1 column=cf:c, timestamp=1499600731612, value=value4

row2 column=cf:b, timestamp=1499600686798, value=value2

row3 column=cf:c, timestamp=1499600707212, value=value3

3 row(s) in 0.0480 seconds

可以看到一共有四条数据

每条数据都有一个时间戳,这是HBase写入时记录的系统时间。

用表格描述这张表

row key

column family: cf

a

b

c

row1

value1

value4

row2

value2

row3

value3

空的表格并不代表这里有这个单元格存在。在传统数据库中,空白单元表示该单元存在但其值为空(传统数据库总是结构化的)。但这里画成二维表只是便于理解,其本质上完全是非结构化的。

例如:我们使用get来获取特定一行的数据:

hbase(main):019:0> get 'test','row2'

COLUMN CELL

cf:b timestamp=1499600686798, value=value2

1 row(s) in 0.0400 seconds

4.更新数据

更新test一个单元(将row1的cf:a列更新值为value5):

hbase(main):020:0> put 'test' , 'row1' ,'cf:a' , 'value5'

0 row(s) in 0.0210 seconds

结果:

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

ROW COLUMN+CELL

row1 column=cf:a, timestamp=1499602903513, value=value5

row1 column=cf:c, timestamp=1499601334793, value=value5

row2 column=cf:b, timestamp=1499600686798, value=value2

row3 column=cf:c, timestamp=1499600707212, value=value3

3 row(s) in 0.0350 seconds

5.删除数据

用以下命令删除这张表:

hbase(main):022:0> disable 'test'

0 row(s) in 2.2800 seconds

hbase(main):023:0> drop 'test'

0 row(s) in 1.2600 seconds

HBase中删除表必须先把表下线(disable) ,  然后才能把表删除掉。

运行以下命令退出Shell:

hbase(main):024:0> exit

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值