Hbase shell命令
常用命令组
在 Hbase Shell 单元中,可以通过 help
命令来查看有哪些命可以使用。而这些命令按照功能范围可以分为若干组 ,这里选取常用的命令组进行详细介绍:
- 通用操作
- DDL操作
- DML操作
- 安全操作
1. 通用操作
status
status
命令用于返回Hbase集群的状态,包括 master、RegionServer的数量和活跃情况,还包括集群的负载情况。
可加字段(参数) : simple、summary、detailed
。使用三者中的一个即可,可以获取更加详细的信息,记住必须给所加的字段加上引号!
代码演示:
status 'summary'
输出结果:
version
返回hbase的版本
whoami
whoami
命令用于返回Hbase用户详细信息。如果执行这个命令,返回当前Hbase用户。
代码演示:
whoami
输出结果:
table_help
table_help
命令引导用户如何使用表引用的命令。当使用此命令时,会显示帮助主题表的相关命令。
2. DDL操作
create
create命令用于创建一张新的表,在创建时必须输入表的名称和ColumnFamily的名称。
用法1:只创建一个新表,而不定义列族属性
语法格式:create '表名',{NAME => '列族名1'},{NAME => '列族名2'}, ...
简化格式:create '表名' ,'列族名1','列族名2, ...'
用法2:在建立新表时,可以同时修改表属性
语法格式:create '表名',{NAME => '列族名1',属性名 => 属性值}, {NAME => '列族名2',属性名 => 属性值}, ...
示例:创建 test 表,包含1个名字为 info 的列族,并指定单元格值的最大版本数为5
附:常见的列族属性说明如下:
NAME:列族名称,
BLOOMFILTER:布隆过滤器,
VERSIONS:列值的最大版本数量,
MIN_VERSIONS:列值保留的最小版本数量,
DATA_BLOCK_ENCODING:是否数据块编码,
IN_MEMORY:数据是否优先存于内存中,
BLOCKCACHE:是否开启数据块缓存,
BLOCKSIZE:设置HBASE默认块大小,
TTL:列版本数据的生存时间,
COMPRESSION:数据压缩方式,
REPLICATION_SCOPE:跨集群复制的范围,
KEEP_DELETED_CELLS:是否保留删除的单元格。
list
List命令用于列出数据库中所有的表名,用于查询数据库中的表
语法:list
或list '通配符'
示例:查看数据库中存在以 t 开头的表
alter
-
新建/修改 列族。若传入新的列族名则可以新建列族;若传入的列族名已经存在,则可以修改列族属性。
建立/修改一个列族的命令格式如下:
alter '表名',NAME=>'列族名',属性名1'=>'属性值1','属性名2'=>'属性值2',...
修改/建立多个列族的命令如下:
alter '表名',NAME=>'列族名',属性名1'=>'属性值1','属性名2'=>'属性值2',...
修改列族属性
修改列族属性:alter '表名',{NAME=>'列族名1',属性名1'=>'属性值1','属性名2'=>'属性值2',...},{NAME=>'列族名2',属性名1'=>'属性值1','属性名2'=>'属性值2',...}
常见的列族属性:
BLOOMFILTER :布隆过滤器,是Hbase系统中的高级功能,主要用于提高特定访问模式下的查询速度
TTL:用于限定数据的超时时间,即每个Cell的数据的超时时间(当前时间——最后的更新时间)
COMPRESIONS:设置压缩格式,可以间接提高查询效率,但是会影响写入的效率
REPLICATION_SCOPE:表的复制范围
MIN_VERSION
BLOCKSIZE
IN_MEMORY
-
删除列族
alter '表名',‘delete’=>'列族名'
-
修改表级别属性
alter '表名',属性名1'=>'属性值1','属性名2'=>'属性值2',...
常见的表级属性:
MAX_FILESIZE:表示设置最大文件大小
READONLY:表示设置表为只读
MEMSTORE_FLUSHSIZE:表示HReigon上设置的一个阈值,当MemStore的大小超过这个阈值时,将会发起Flush请求
DEFERRED_LOG_FLUSH:表示延迟日志刷写
DURABILITY:HBase的预写日志
REGION_REPLICATION
NORMALIZATION_ENABLED
PRIORITY
IS_ROOT
IS_META
-
删除表级别属性
alter '表名',METHOD => 'table_att_unset',NAME => 属性名
-
删除表级别属性。一般情况下,用户都会把这个表/列族的配置属性设置在hbasesite.xml文件中。现在alter命令给了用户一个可以更改专属于这个表/列族的配置属性值的机会。其命令格式如下:
alter '表名',CONFIGURATION => {'配置名' => '配置值'}
or
alter '表名',{NAME => '列族名',CONFIGUREATION => {'配置名' => '配置值'}}
-
并行执行多个命令。可以把前面介绍的这些命令都放到一条命令中同时执行。其命令格式如下:
alter '表名',命令1,‘命令2’,‘命令3’
disable
Disable命令用于停用指定表。若要删除表或改变其数据,首先要使用disable命令关闭标,若要重新启动此标,则使用enable命令
语法:disable '表名'
示例:禁用 test 表
disable_all
用通过正则表达式来停用读个表及禁用所有匹配给定正则表达式的表
is_disabled
查看验证表是否被禁用
enable
功能:用来启动指定表
格式:enable '表名'
enable_all
通过正则表达式来启动指定表及其用所有匹配给定正则表达式的表
is_enabled
用于查找表是否被启用
describe
功能:用于输出表的描述信息
格式:describe '表名'
简写形式:desc '表名'
示例:查看 ‘student’ 表的详细信息
exists
判断指定表是否存在
格式:exists '表名'
示例:判断‘student’表是否存在
drop
功能:删除指定表,在删除表之前必须先禁用要删除的表
格式:drop '表名'
示例:删除’student’表
drop_all
用于通过正则表达式来删除多个表及删除所有匹配给定正则表达式的表
3. DML操作
scan
功能:用于查看HTable数据,及使用scan命令可以得到表中的数据。
格式:scan '表名'
示例:查看‘student’表中的数据
但是在实际应用中一般并不会进行全表扫描,这样子太浪费时间
-
扫描限定列
scan '表名',{COLUMNS => '列族:列名'}
-
指定行键范围。指定行间范围的scan命令通过传入起始行键(STARTROW)和结束行键(ENDROW)来遍历指定行键范围的记录。其中STARTROW和ENDROW都是可选的参数,可以不输入。如果不输入ENDROW,就从 STARTROW一直显示下去直到表的结尾,如果不输入STARTROW,就会从表头一直遍历到ENDROW。此处强烈建议每次调用scan命令时,至少指定起始行键或者结束行键,这样都会极大地加速遍历速度。其命令格式如下:
scan '表名',{STARTROW => '起始行键',END_ROW => '结束行键'}
-
指定最大返回行数
scan '表名',{LIMIT => 行数}
-
指定时间戳范围
scan '表名',{TIMERANGE => [最小时间戳, 最大时间戳]}
-
显示单元格的多个版本
scan '表名',{VERSION => 版本数}
-
显示原始单元格记录。带显示原始单元格记录的
scan
命令用于显示原始记录,即被打上墓碑标记的数据,通过添加ROW参数可以显示原始记录
scan '表名',{RAW => true,VERSION => 版本数}
put
Put 命令在新增记录的同时,还可以为记录设置属性
最简命令参数:
put '表名','行键','列族:列名','值'
加上后面可以加的参数后的命令:
put '表名','行键','列族:列名','值','时间戳',{ATTRIBUTES => {'属性' => '属性值'}},{VISIBILITY => 'PRIVATE | SECRET'}
示例:向 ‘student’ 表中 info列族 name列 插入一条数据 ‘zs’
get
scan命令可以查询到多条数据而 ,get命令只能查询一个单元格的记录
get '表名','行键'
示例:获取 ‘student’表中 行键位 ‘s1’ 的数据取出
append
我骗你的命令适用于给某个单元格的,直接上新的直
delete
Do you to命令适用于删除某个列的数据
deleteall
删除整行数据也可以删除单列数据
count
用于计算表的行数量
get_splits
用于获取表所对应的region数个数
truncate
禁止删除并重新创建一个表。这个命令跟关系型数据库中同名的命令实现的功能是一样的,吉清空表内数据保留表的属性
truncate_preserve
清空表内数据,但是她会保留表所对应的region当用户,希望保留region的拆分规则时,可以使用它,避免重新制定region拆分规则
4. 安全操作
list_security_capabilities
用于列出所有支持的安全特性
grant
瘦于特定的权限,如图形执行和管理表,给定一个特定的用户
revoke
用于撤销用户访问表的权限
user_permission
列出特定标的所有权限或指定用户,针对指定表的权限