您的位置:首页 > 运维架构 > Shell

HBase Shell常用命令

2014-03-20 13:57 190 查看
概述:HBase是一个分布式的、高可靠性、高性能的存储系统,面向列的开源数据库。HBase是Google Bigtable的开源实现,它利用Hadoop HDFS作为其文件存储系统,利用Hadoop MapReduce来处理HBase中的海量数据,利用Zookeeper作为协同服务。 它是Apache的Hadoop项目的子项目,适合于非结构化数据存储的数据库。利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群。

命令:disable 'tableName' --disable表。注:修改表结构时,必须要先disable表。

命令:enable 'tableName' --使表可用

命令:drop 'tableName' --删除表

HBase基本命令

下面我们再看看看HBase的一些基本操作命令,我列出了几个常用的HBase Shell命令,如下:
名称

命令表达式

创建表create '表名称', '列名称1','列名称2','列名称N'
添加记录 put '表名称', '行名称', '列名称:', '值'
查看记录get '表名称', '行名称'
查看表中的记录总数count '表名称'
删除记录delete '表名' ,'行名称' , '列名称'
删除一张表先要屏蔽该表,才能对该表进行删除,第一步 disable '表名称' 第二步 drop '表名称'
查看所有记录scan "表名称"
查看某个表某个列中所有数据scan "表名称" , ['列名称:']
更新记录 就是重写一遍进行覆盖
HBase表DDL和DML操作:

1、创建表操作:

创建表: create 'student','name','address'

说明:新建student表,该表有两列 名称和地址,名称只有一个,address可以有多个,

2、插入操作:

插入一条记录,只能插入某列:put 'student','row1','name','tom'

说明:向student有中插入记录,记录的row值为row1,列name的值为tom

插入列簇

地址簇插入家庭地址:put 'student','row1','address:home','ShiDai Street'

地址簇插入学校地址:put 'student','row1','address:school','BinAn Street'

查询学生的家庭地址:get 'student','row1',{COLUMN=>'address:home'}

3. 更新操作:

根据row值 查询一条记录:get 'student','row1'

根据row值更新name值 (系统会直接更新): put 'student','row1','name','tom2'

再查询时,系统返回最新的值: get 'student','row1'

根据timestamp查询更新之前的 name值:lsi

get 'student','row1',{COLUMN=>'name',TIMESTAMP=>1301473112875}

5、删除操作d

删除Id为temp的值的“info:age ”:delete 'student','temp','info:age' ls

删除整行: deleteall 'student','tom'

将整张表清空: truncate ''student'

设置表不可用: disable 'student'

删除表: drop 'student'

6、查询操作

查询数据库中所有的表:list

查询student表中所有数据:Scan 'student'

查看student表中address列族的所有数据:scan 'student',{COLUMNS =>'address'}

Get一行:get ''student' , 'row1'

查询表是否存在:exists 'student'

查询表结构:describe 'student'

查询服务器状态:status

如:3 servers, 0 dead,1.0000 average load

查询hbase版本:version

如:0.90.4, r1150278, Sun Jul 24 15:53:29 PDT 2011

7、其他操作:

判断表是否enable 或disable:is_enabled 'student'或 is_disabled 'student'

关闭shell: exit

学生表示例:

1. 创建表

create 'student','name','address'

新建student表,该表有两列 名称和地址,名称只有一个,address可以有多个,

2.插入一条记录,只能插入某列

put 'student','1','name','tom'

向student有中插入记录,记录的row值为1,列name的值为tom

3. 根据row值 查询一条记录

get 'student','1'

查询结果:

COLUMN CELL

name: timestamp=1301473112875, value=tom

4. 根据row值更新name值 (系统会直接更新)

put 'student','1','name','tom2'

5.再查询时,系统返回最新的值

hbase(main):052:0> get 'student','1'

COLUMN CELL

name: timestamp=1301473425265, value=tom2

6.根据timestamp查询更新之前的 name值,

get 'student','1',{COLUMN=>'name',TIMESTAMP=>1301473112875}

7. 给学生的地址簇插入家庭地址

put 'student','1','address:home','shenzhen street'

8. 给学生的地址簇插入学校地址

put 'student','1','address:school','huaqiangbei street'

9. 查询学生的家庭地址

get 'student','1',{COLUMN=>'address:home'}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: