Hbase 常用Shell命令

一:Hbase常用Shell命令表

help                                      查看命令的使用描述 help ‘命令名‘
whoami 身份(root、user) whoami
version 返回hbase版本信息 version
status 返回hbase集群的状态信息 status
table_help 查看如何操作表 table_help
create 创建表 create ‘表名‘, ‘列族名1‘, ‘列族名2‘, ‘列族名N‘
alter 修改列族 添加列族:alter ‘表名‘, NAME=>‘列族名‘
删除列族:alter ‘表名‘, {NAME=> ‘列族名‘, METHOD=> ‘delete‘}
describe 显示表相关的详细信息 describe ‘表名‘
list 列出hbase中存在的所有表 list
exists 测试表是否存在 exists ‘表名‘
put 添加或修改的表的值 put ‘表名‘, ‘行键‘, ‘列族名‘, ‘列值‘
put ‘表名‘, ‘行键‘, ‘列族名:列名‘, ‘列值‘
scan 通过对表的扫描来获取对用的值 scan ‘表名‘
扫描某个列族:scan ‘表名‘,{COLUMN=>‘列族名‘,FORMATTER =>‘toString‘}
扫描某个列族的某个列:scan ‘表名‘, {COLUMN=>‘列族名:列名‘}
查询同一个列族的多个列: scan ‘表名‘, {COLUMNS => [ ‘列族名1:列名1‘, ‘列族名1:列名2‘ …]}
get 获取行或单元(cell)的值 get ‘表名‘, ‘行键‘
get ‘表名‘, ‘行键‘, ‘列族名‘
count 统计表中行的数量 count ‘表名‘
incr 增加指定表行或列的值 incr ‘表名‘, ‘行键‘, ‘列族:列名‘, 步长值
get_counter 获取计数器 get_counter ‘表名‘, ‘行键‘, ‘列族:列名‘
delete 删除指定对象的值(可以为表,行,列对应的值,另外也可以指定时间戳的值) 删除列族的某个列: delete 表名‘, ‘行键‘, ‘列族名:列名‘
deleteall 删除指定行的所有元素值 deleteall ‘表名‘, ‘行键‘
truncate 重新创建指定表(清空表) truncate ‘表名‘
enable 使表有效 enable ‘表名‘
is_enabled 是否启用 is_enabled ‘表名‘
disable 使表无效(删除表之前先禁用) disable ‘表名‘
is_disabled 是否无效 is_disabled ‘表名‘
drop 删除表 drop的表必须是disable的
disable ‘表名‘
drop ‘表名‘
shutdown 关闭hbase集群(与exit不同)  
tools 列出hbase所支持的工具  
exit 退出hbase shell

二:Hbase操作

DDL操作

(1) 查看数据库中有哪些表

hbase(main):005:0> list
TABLE
person

 

(2) 查看表属性信息

Hbase 常用Shell命令
hbase(main):007:0> describe person
# 或者
hbase(main):007:0> desc person

Table person is ENABLED
person
COLUMN FAMILIES DESCRIPTION
{
NAME => age, 
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
}                                                     

# 其中的属性的意义:
NAME:列族名
VERSIONS:最大版本号
MIN_VERSIONS:最小版本号
TTL(Time To Live):存活时间
IN_MEMORY:是否开启缓存,默认false,应该开启,否则与BLOCKCACHE冲突
BLOCKCACHE:读缓存是否开启,默认开启,64M
Hbase 常用Shell命令

 

(3) 建表

# create 表名‘, 列族1‘, 列族2...
hbase(main):002:0> create person‘, name‘, age
# 等价于
hbase(main):002:0> create person‘,{NAME=>name‘ },{NAME=>age}
# 建表时可以指定表属性信息
hbase(main):005:0> create user_info‘,{NAME=>base_info‘,VERSIONS=>3 },{NAME=>extra_info‘,IN_MEMORY=>true‘} 

 

(4) alter 修改表

Hbase 常用Shell命令
--(1) 增加列族
alter table_name‘, add_family
# 或者
alter table_name‘, {NAME => add_family}
# 当然,新增加的列可以设置属性,比如
alter table_name‘, {NAME => add_family‘, VERSIONS => 3}

--(2) 删除列族
alter table_name‘, {NAME => delete_family‘, METHOD => delete}
或者
alter table_name‘, delete‘ => delete_family‘

--(3) 添加列族f1同时删除列族f2
alter user‘, {NAME => f1‘}, {NAME => f2‘, METHOD => delete}

--(4) 修改列族
# 将user表的f1列族版本号改为5
alter user‘, NAME => f1‘, VERSIONS => 5
Hbase 常用Shell命令

 

(5) 判断表是否存在

exists table_name

 

(6) 禁用表与启用表

Hbase 常用Shell命令
--(1) 禁用表
disable table_name‘
--(2) 查看表是否禁用
is_disabled table_name‘
--(3) 启用表
enable table_name‘
--(4) 查看表是否启用
is enabled table_name
Hbase 常用Shell命令

 

(7) 删除表

# hbase的某些版本,在删除表前,需要先禁用表
disable table_name
drop table_name

 

DML 操作

(1) 插入数据

--(1) 
# put 表名‘,rowkey‘,列族名:列名‘,
put person‘,0001‘,name:firstname‘, Jed‘
--(2) 可以指定时间戳,否则默认为系统当前时间
put person‘,0002‘,info:age‘,20,1482077777778

 

(2) 查询某行

Hbase 常用Shell命令
--(1) 
get person‘, 0001‘
--(2) 查询某行,指定列名
get person‘, 0001‘, name:firstname‘
--(3) 查询某行,添加其他限制条件
# 查询person表中,rowkey为0001的这一行,只显示name:firstname这一列,并且只显示最新的3个版本
get person‘, 0001‘, {COLUMNS => name:firstname‘, VERSIONS => 3}
# 查看指定列的内容,并限定显示最新的3个版本和时间范围 
get person‘, 0001‘, {COLUMN => name:first‘, VERSIONS => 3, TIMERANGE => [1392368783980, 1392380169184]}
# 查询person表中,rowkey为rk0001‘,且某列的内容为中国的记录
scanperson‘, rk0001‘, {FILTER => "ValueFilter(=, ‘binary:中国‘)"}
Hbase 常用Shell命令

 

(3) 全表扫描

Hbase 常用Shell命令
--(1) 扫描全表
scan person‘
--(2) 扫描时指定列族
scan person‘, {COLUMNS => name}
--(3) 扫描时指定列族,并限定显示最新的5个版本的内容
scan person‘, {COLUMNS => name‘, VERSIONS => 5}
--(4) 设置开启Raw模式,开启Raw模式会把那些已添加删除标记但是未实际删除的数据也显示出来
scan person‘, {COLUMNS => name‘, RAW => true}
--(5) 列的过滤
# 查询user表中列族为info和data的信息
scan user‘, {COLUMNS => [info‘, data]}
# 查询user表中列族为info,列名为name、列族为data,列名为pic的信息
scan user‘, {COLUMNS => [info:name‘, data:pic]}
# 查询user表中列族为info,列名为name的信息,并且版本最新的5个
scan user‘, {COLUMNS => info:name‘, VERSIONS => 5}
# 查询user表中列族为info和data且列名含有a字符的信息
scan user‘, {COLUMNS => [info‘, data‘], FILTER => "(QualifierFilter(=,‘substring:a‘))"}
# 查询user表中列族为info,rk范围是[rk0001, rk0003)的数据
scan people‘, {COLUMNS => info‘, STARTROW => rk0001‘, ENDROW => rk0003}
# 查询user表中row key以rk字符开头的
scan user‘,{FILTER=>"PrefixFilter(‘rk‘)"}
# 查询user表中指定时间范围的数据
scan user‘, {TIMERANGE => [1392368783980, 1392380169184]}
scan的用法很多,参数,过滤条件可以很多,各种组合, 在此不列举过多的例子,参考 help scan
Hbase 常用Shell命令

 

(4) 删除数据

delete table_name‘, rowkey‘, family:column

 

(5) 清空表

转载于https://www.cnblogs.com/wendi/p/14158541.html

truncate table_name

Hbase 常用Shell命令

上一篇:VimScript 速查表


下一篇:我的博客已搬迁到http://www.lsworks.net