一: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(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

 

(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 修改表

--(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

 

(5) 判断表是否存在

exists \'table_name\'

 

(6) 禁用表与启用表

--(1) 禁用表
disable \'table_name\'
--(2) 查看表是否禁用
is_disabled \'table_name\'
--(3) 启用表
enable \'table_name\'
--(4) 查看表是否启用
is enabled \'table_name\'

 

(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) 查询某行

--(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\',且某列的内容为\'中国\'的记录
scan\'person\', \'rk0001\', {FILTER => "ValueFilter(=, \'binary:中国\')"}

 

(3) 全表扫描

--(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\'

 

(4) 删除数据

delete \'table_name\', \'rowkey\', \'family:column\'

 

(5) 清空表

truncate \'table_name\'

 

 

 

版权声明:本文为wendi原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/wendi/p/14158541.html