HBase命令
1,指导手册
hbase
2,HBase Shell的一些基本操作命令
基本操作
-
1, 进入 HBase 命令行界面
hbase shell #任意一台安装HBase的服务器节点
-
2,查看帮助信息
hbase(main):001:0> help #获取所有命令的帮助信息 hbase(main):001:0> help "ddl" #获取一组命令的帮助信息 hbase(main):001:0> help "list" #获取单独命令的帮助信息
-
3,查询服务器状态
hbase(main):001:0> status
-
4, 查询 HBase 版本
方法一:hbase(main):001:0> version 方法二:hbase version
-
5,退出 HBase 命令行界面
方法一:hbase(main):008:0> exit 方法二:hbase(main):001:0> quit
DDL(数据定义语言)操作
-
1,创建表
-
默认版本
语法(默认版本号为1)create 'table_name','column_family1','column_family2',......
示例:创建表students,有两个列簇:base_info,course_info
hbase(main):002:0> create 'students','base_info', 'course_info'
-
自己设置版本号
语法:create 'table_name', {NAME => 'column_family', VERSIONS => 'versions'},......
示例:创建表student,有两个列簇:base_info,course_info,版本号前者为3,后者为1
hbase(main):001:0> create 'student',{NAME => 'base_info',VERSIONS => 3},{NAME => 'course_info',VERSIONS => 1}
-
-
2,查看表
命令:hbase(main):003:0> list
-
3,查看表结构
describe 'table_name'
示例:查看student的表结构
hbase(main):005:0> describe 'student'
-
4,修改表结构
语法:alter ‘table_name’, {NAME => ‘column_family1’, VERSIONS => ‘versions’}
示例:修改students列簇base_info的版本号hbase(main):009:0> alter 'students',{NAME => 'base_info', VERSIONS => 3}
-
5, 删除列簇
语法:alter ‘table_name’, {NAME => ‘column_family1’, METHOD => ‘delete’}
示例:将表students中的列簇base_info删除hbase(main):016:0> alter 'students',{NAME => 'base_info',METHOD => 'delete'}
查看是否删除成功:
hbase(main):017:0> describe 'students'
-
6,删除表
步骤:
disable(禁用)表
drop(删除)表
示例:将表students删除disable表:hbase(main):019:0> disable 'students' drop表:hbase(main):020:0> drop 'students'
-
7,查询表是否存在
语法:exists ‘table_name’
示例:查询student表是否存在hbase(main):005:0> exists 'student'
-
8,判断表是否禁用
语法:is_disabled ‘table_name’
示例:判断student表是否禁用hbase(main):026:0> is_disabled 'student'
-
9,判断表是否启用
语法:is_enabled ‘table_name’
示例:判断student表是否启用hbase(main):005:0> is_enabled 'student'
DML(数据操作语言)操作
1,添加数据
语法:put ‘table_name’,‘rowkey’,‘column_family:column’,‘value’,‘timestamp’
示例:为表student添加数据
put 'student','1001','base_info:name','shiny'
2,查询数据
-
1,扫描整个表
语法:scan ‘table_name’,{COLUMNS => [ ‘column_family:column’,… ], LIMIT => num}
(1)扫描表student,base_info:name的前2条数据hbase(main):004:0> scan 'student',{COLUMNS => 'base_info:name',LIMIT => 2}
(2)扫描表student的前2条数据
hbase(main):005:0> scan 'student',{LIMIT => 2}
-
2,查询某行记录
语法:
(1)根据行键:get ‘table_name’,‘rowkey’
(2)根据行键和列簇:get ‘table_name’,‘rowkey’,‘column_family’
(3)根据行键、列簇和列:get ‘table_name’,‘rowkey’,‘column_family:column’
示例:
(1)查询表student,行键1001中所有的数据hbase(main):073:0> get 'student','1001'
(2)查询表student,行键1001中的course_info下所有的列值
hbase(main):001:0> get 'student','1001','course_info'
(3)查询表student,行键1001中的base_info下的name值
hbase(main):072:0> get 'student','1001','course_info:Math'
只会显示最新版本的数据
-
3,查询表中数据行数
语法:count ‘table_name’
示例:查询表student的行数(行键总数)hbase(main):006:0> count 'student'
3,修改数据
语法:put ‘table_name’,‘rowkey’,‘column_family:column’,‘value’
即重新put一下将原先的数据覆盖
示例:将表student,1001中course_info:Math的值修改为100
hbase(main):009:0> put 'student','1001','course_info:Math','100'
查询多个版本数据
(1)显示最新版本的数据
hbase(main):072:0> get 'student','1001','base_info:name'
(2)通过timestamp来获取对应版本的数据(前提知道timestamp)
hbase(main):013:0> get 'student','1001',{COLUMN=>'course_info:Math',TIMESTAMP => 1500542224220}
(3)通过versions来获取多个版本的数据
hbase(main):019:0> get 'student','1001',{COLUMN=>'course_info:Math',VERSIONS => 2}
4,删除数据
-
1,删除行中某个列值
语法:delete ‘table_name’,‘rowkey’,‘column_family:column’,‘timestamp’
必须指定列名,指定时间戳说明删除指定版本数据
示例:删除表student,1001中的course_info:Math的数据(所有版本)hbase(main):015:0> delete 'student','1001','course_info:Math'
-
2,删除行
语法:deleteall ‘table_name’,‘rowkey’
不指定列名,删除整行数据
示例:删除表student,1001的所有数据hbase(main):018:0> deleteall 'student','1001'
-
3,清空表
语法:truncate ‘table_name’
示例:清空表studenthbase(main):020:0> truncate 'student'