进入hbase shell命令行
##在安装的随意台服务器节点上,执行命令:
[hadoop@hadoop01 ~]$ hbase shell
进入之后先别着急,先看一下提示。其实是不是有一句很重要的话:
HBase Shell; enter ‘help’ for list of supported commands.
Type “exit” to leave the HBase Shell
意在告诉怎么获得帮助,怎么退出客户端
help 获取帮助
help 获取所有命令提示
help "dml" 获取一组命令的提示
help "put" 获取一个单独命令的提示帮助
exit 退出 hbase shell 客户端
下面真正进入命令的操作演示
- 通用命令
status 查看集群状态 version 查看hbase的版本的 whoami 查看安装用户的
- 在hbase中 没有数据库database的概念 替代概念namespace
1)创建namespace
2)查看namespace列表create_namespace 'namespace名字' 例:create_namespace 'ns'
3)查看表的详细信息list_namespace
4)修改 namespace (针对属性修改的)describe_namespace 'ns'
5)删除namespacealter_namespace 'ns'
drop_namespace 'ns'
- ddl
1)创建表 表名+列族
2)查看表列表语法1: 可以指定每一个列族的属性的 create 'namespace:表名', {NAME => '列族的名'}, {NAME => '列族2的名字'}, {NAME => '列族3的名字'} 例: create 'ns:test01',{NAME => 'info01'},{NAME => 'info02'} create 'ns:test02',{NAME => 'info01',VERSIONS => 3},{NAME => 'info02'} 语法2: 使用默认属性 create '表名', '列族1', '列族2', '列族3' 例: create 'ns_01','info01','info02'
3)查看表的详细描述信息list 显示所有表 list 'namespace:.*' 查看指定namespace下的所有表 例: list 'bd1906:.*' list 'namespace:n.*' 查看指定namespace下的某些特征的表名 list_namespace_tables 'namespace'查看指定namespace下的所有表 例: list_namespace_tables 'ns'
4)修改表describe|desc '表名' desc 'ns_01'
5)修改表状态信息添加列族 alter '表名', NAME => '新的列族名', VERSIONS => 5 alter 'ns:test01',NAME => 'info03', VERSIONS => 2 删除列族 alter 'namespace:表名', NAME => '需要删除的列族', METHOD => 'delete' alter 'namespace:表名', 'delete' => '需要删除的列族' alter "ns:test01",NAME => "info01",METHOD => "delete" alter "ns:test01","delete" => "info03"
6)查看表状态禁用表 disable '表名' 禁用某一个表 disable_all 'namespace:.*' 禁用指定 namespace 下的所有表 disable 'ns:test01' disable_all 'ns:.*' 启用表 enable '表名' 启用表 enable_all enable 'ns:test01' enable_all 'ns:.*'
hbase中表具有两个状态
enable 启用状态 可以执行任何操作的
disable 禁用状态 不允许执行写操作
7)删除表is_disabled '表名' 查看表是否被禁用 true false is_enabled '表名' 查看表是否被启用 true false is_disabled 'ns:test01' is_enabled 'ns:test01'
想删表先禁用表disable|drop 'namespace' 删除指定表 drop_all 'namespace:.*' 删除指定namespace下的所有表 disable 'ns_01' drop 'ns_01' disable_all 'ns:.*' drop_all "ns:.*"
- dml
1)数据插入
每一次只能插入一行的一列
2)扫描查询,一次返回多条数据hbase> put 'namespace:表名', '行健', '列族:列名', '列的值', 时间戳 put 'user:test01','rk001','info01:name','zs' put 'user:test01','rk001','info02:name','ww' put 'user:test01','rk001','info02:age','15' put 'user:test01','rk000','info01:age','13' put 'user:test01','rk0000','info01:age','13'
3)查询单条数据,一条一个行健hbase> scan 'namespace:表名' 全表扫描 hbase> scan 'namespace:表名', {COLUMNS => ['c1', 'c2']} 指定扫描的列 hbase> scan 'namespace:表名', {COLUMNS => ['c1', 'c2'],LIMIT => 10} 指定查询的行数 LIMIT 按照行健排序 返回指定的前几行的数据 hbase> scan 'namespace:t1', {COLUMNS => ['c1', 'c2'], STARTROW => ,ENDROW => } 指定行健范围 扫描 hbase> scan 'namespace:t1', {COLUMNS => 'c1', TIMERANGE => [1303668804, 1303668904]} 指定时间戳范围扫描 scan 'bd1906:test01' scan 'bd1906:test01',{COLUMNS => "info01:name"} scan 'bd1906:test01',{COLUMNS => ["info01:name","info01:age"]} scan 'user_info',{COLUMNS => ["base_info:name","base_info:age"],LIMIT=>10} scan 'user_info',{STARTROW => "zhangsan_20150701_0001"} 默认到末尾 包含开始行健 scan 'user_info',{ENDROW => "zhangsan_20150701_0001"} 默认从最开始 不包含结尾行健的 scan 'user_info',{STARTROW => "zhangsan_20150701_0001",ENDROW => "zhangsan_20150701_0004"} 含头不含尾 scan "user_info",{COLUMNS => "base_info:name",TIMERANGE => [1571642275758,1571642295062]} 时间戳范围 含头不含尾的
4)数据删除hbase> get 'namespace:表名', '行健' 查询某一行的所有数据 hbase> get 'namespace:表名', '行健', {TIMERANGE => [ts1, ts2]} 查询某一行 返回指定时间戳范围的列的值 hbase> get 'namespace:t1', '行健', {COLUMN => '列'} 查询某一行指定列的数据 hbase> get 'namespace:t1', '行健', {COLUMN => '列', TIMESTAMP => 时间戳} 指定某一行的某一个列的 某一个时间戳对应的值 cell的定位 hbase> get 'namespace:t1', '行健', {COLUMN => '列', VERSIONS => 4} 查询某一行 某一列的 指定版本的数据 get 'user_info','zhangsan_20150701_0001' get 'user_info','zhangsan_20150701_0001',{TIMERANGE =>[1571642275758,1571642295063]} get "user_info","zhangsan_20150701_0001",{COLUMN => "base_info:name"} get "user_info","zhangsan_20150701_0001",{COLUMN => ["base_info:name","extra_info:Hobbies"]} get "user_info","zhangsan_20150701_0001",{COLUMN => "base_info:name",VERSIONS => 3} get "user_info","zhangsan_20150701_0001",{COLUMN => "base_info:name",TIMESTAMP => 1571643964566}
5)清空表delete 'namespace:表名', '行健', '列族:列', 版本(时间戳) delete "user_info","zhangsan_20150701_0001","base_info:name",1571643964566
先禁用表 —》 清空数据 —》 启用表
6)count 统计表数据行数truncate '表名’ truncate "bd1906:test01"
count 'namespace:表名' count 'user_info'