hbase之shell操作
hbase之shell操作
hbase之shell操作(帮助命令)
进入hbase的客户端:安装过hbase的节点都可以
进入客户端命令:hbase shell
hbase的客户端操作界面:hbase(main):001:0>
查看帮助命令:help
查询相关命令的帮助:help command
ctrl+backspace是删除
----------------------------------------------------------------------------
hbase之shell操作(namespace操作)
一、简介
hbase中没有数据库概念,hbase中有namespace相当于hive中的数据库。
Group name: namespace
Commands: alter_namespace, create_namespace, describe_namespace, drop_namespace, list_namespace, list_namespace_tables
二、创建
help "create_namespace"
create_namespace "name"
三、查看namespace列表
list_namespace
四、查看详细描述信息
describe_namespace "name"
五、显示当前namespace下的所有表
list_namespace_tables “name”
六、删除 namespace
drop_namespace "name"
七、注意
默认hbase中有2个namespace
default:默认,默认建表不指定namespace 就在这个下面的
hbase:hbase的系统namespace 存储hbase本身相关信息的
-----------------------------------------------------------------------
hbase之shell操作(DDL)
一、简介
Group name: ddl
Commands: alter, alter_async, alter_status, create, describe, disable, disable_all, drop, drop_all, enable, enable_all, exists, get_table, is_disabled, is_enabled, list, locate_region, show_filters
二、创建表
1、语法1
craete "namespace:表名","family column","family column"
create "bdtest:test1","info1","info2"
2、语法2
{表的一些属性 必须包含列族}
create "namespace:表名",{NAME => “”,VERSIONS => 3,TTL =>},{NAME => ""}
常用的属性:VERSIONS => 1 指定数据版本, TTL => 2592000 指定数据存储周期
create "bdtest:test2",{NAME => "info1"},{NAME => "info2",VERSIONS => 3}
三、删除表
先禁用表,在删除表
drop "namespace:表名"
disable "bdtest:test1"
drop "bdtest:test1"
drop_all
hbase> drop_all 'namespace:.*|t.*'
删除指定的所有表
四、修改表
1、修改属性信息
alter 'namespace:表名', '列族', {NAME => '列族', IN_MEMORY => true}, {NAME => '列族', VERSIONS => 5}
alter "bdtest:test1",{NAME => "info1",VERSIONS => 3}
其中不在花括号中的列族,可以省略,如果要添加一个默认状态下的列族可以使用。
2、添加列族
alter "bdtest:test1",{NAME => "info3",VERSIONS => 3}
修改表的时候,列族不存在,事实上就是添加
alter "bdtest:test1","info4",{NAME => "info5",VERSIONS => 3}
3、删除列族
hbase> alter 'namespace:表名', NAME => '列族', METHOD => 'delete'
hbase> alter 'namespace:表名', 'delete' => '列族'
METHOD 用于指定对当前列族的操作
alter "bdtest:test1",NAME => "info5",METHOD => 'delete'
alter "bdtest:test1",'delete' => "info4"
注意: 表中至少有一个列族,如果表中只剩一个列族,不允许删除
五、查看表列表
list
hbase> list 查看所有的表列表
hbase> list 'abc.*' 查看所有的指定字符开头的表default下的
hbase> list 'ns:abc.*' 查看指定的namespace下的所有的指定字符开头的表列表
list 'bdtest:t.*'
hbase> list 'ns:.*' 查看指定namespace下的所有表列表
list "bdtest:.*"
六、查看表的详细信息
help 'describe'
hbase> describe 't1' 查看default下的表的描述信息
hbase> describe 'ns1:t1' 查看指定namespace下的所有表描述信息的
简写:
hbase> desc 't1'
hbase> desc 'ns1:t1'
建表过程中,没有指定版本信息,默认1个。默认存储周期,永久存储 ttl=> forever
七、查看表状态
1、两种状态
启用:enable 可以执行操作的
禁用:disable 不可以执行操作
2、查看表是否禁用
is_disabled "namespace:表名"
is_disabled "bdtest:test1"
禁用true 启用 false
3、查看表是否启用
is_enabled "namespace:表名"
is_enabled "bdtest:test1"
启用 true 禁用 false
4、注意
默认建表的时候,是启用状态
八、禁用表和启用表
disable "namespace:表名"
enable“namespace:表名”
disable "test1"
is_disabled "test1"
enable "test1"
is_disabled "test1"
disable_all "namespace:.*|t.*" 禁用指定的所有表
enable_all "namespace:.*|t.*" 启用指定的所有表
disable_all "bdtest:.*"
is_disabled "bdtest:test1"
enable_all "bdtest:.*"
is_disabled "bdtest:test1"
------------------------------------------------------------------
hbase之shell操作(DML)
一、简介
Group name: dml
Commands: append, count, delete, deleteall, get, get_counter, get_splits, incr, put, scan, truncate, truncate_preserve
二、添加数据
行键 列族:列 值
hbase> put 'namespace:表名', '行键', '列族:列', '列的值',[ts1(时间戳 不给默认系统时间戳)]
put "bdtest:test2","rk001","info1:name","zs"
put "bdtest:test2","rk001","info1:age","18"
put "bdtest:test2","rk001","info1:addr","hebei"
三、删除数据
hbase> delete 'namespace:表名', '行键', '列族:列', 时间戳
base_info:age timestamp=1558847233830, value=25
delete "user_info","zhangsan_20150701_0004","base_info:age",
四、清空表数据
truncate "namespace:表名"
is_disabled "user_info"
1、- Disabling table... 禁用表
2、- Truncating table... 清空表
3、启用表
五、扫描查询表数据(scan)
1、全表扫描
表下的所有列族的所有列全部显示
scan "namespace:表名"
scan "user_info"
2、指定列显示
scan "namespace:表名",{COLUMNS => '列族:列名'}
scan "namespace:表名",{COLUMNS => ['列族:列名',"列族:列名"]}
scan "user_info",{COLUMNS => "base_info:age"}
scan "user_info",{COLUMNS => ["base_info:name","base_info:age"]}
3、指定显示行数LIMIT
scan "namespace:表名",{COLUMNS => ['列族:列名',"列族:列名"],LIMIT => 需要显示的行数}
scan "user_info",{COLUMNS => "base_info:age",LIMIT => 5}
4、指定rowkey范围显示
STARTROW指定起始的行键,ENDROW指定结束的行键
scan "namespace:表名",{COLUMNS => ['列族:列名',"列族:列名"],LIMIT=> ,STARTROW => "",ENDROW => ""}
scan "user_info",{STARTROW => "baiyc_20150716_0008",ENDROW => "zhangsan_20150701_0004"}
这种显示方式 包含左边界 不包含右边界
只指定STARTROW 不指定 ENDROW 显示到结尾
scan "user_info",{COLUMNS => "base_info:age",STARTROW => "baiyc_20150716_0008",ENDROW => "zhangsan_20150701_0004"}
5、指定时间戳范围
scan "namespace:表名",{COLUMNS=>"",TIMERANGE=>,LIMIT=>}
scan "user_info",{COLUMNS => "base_info:name",TIMERANGE => [1558844852080,1558844855890]}
时间戳范围,含头,不含尾
查询数据 TIMERANGE => [起始时间戳,终止的时间戳]
6、总结
scan进行表数据查询的时候2种方式
(1)全表扫描
(2)指定rowkey范围进行查询
六、单条查询表数据(get)
1、查询指定行键
查询指定行键的 只能查询一条数据的
hbase> get 'namespace:表名',"行键"
get "user_info","zhangsan_20150701_0004"
2、查询指定一行数据的列
COLUMN => []
get "namespace:表名","行键",{COLUMN => ["列族:列",“列族:列”]}
get "user_info","zhangsan_20150701_0004",{COLUMN => ["base_info:name","base_info:age"]}
3、指定查询一行数据的时间戳
查看某一列指定版本的数据
get "user_info","zhangsan_20150701_0004",{TIMESTAMP => 1558844848954}
get "user_info","zhangsan_20150701_0004",{COLUMN => "base_info:age",TIMESTAMP => 1558847233830}
put "user_info","zhangsan_20150701_0004","base_info:age","25"
4、指定查询的数据时间戳范围
get "user_info","zhangsan_20150701_0004",{TIMERANGE => [1558844823464,1558847245992]}
时间戳,含头不含尾的