一、数据定义(创建、删除表)
1、启动、关闭HBase Shell
(1)启动
- 切换到root用户下(su命令)
- 启动hadoop,终端输入:start-all.sh
- 启动zookeeper,分别在三台虚拟机的终端下输入:zkServer.sh start
- 启动hbase,master节点终端输入:start-hbase.sh
- master节点终端下输入:hbase shell ,进入hbase操作命令
(2)关闭
- hbase shell中输入:exit 退出
- 关闭hbase,master终端下输入:stop-hbase.sh
- 关闭zookeeper,分别在三个节点的终端下输入:zkServer.sh stop
- 关闭hadoop,master节点终端下输入命令:stop-all.sh
2、数据定义
(1)查看表的相关信息
- 查看表是否存在:exits '表名'
- 查看当前所有表名:list
- 查看选定表的列族及其参数:describe '表名'
(2)创建表
create '表名','列族名'
例子:
- create ’Student‘,'StuInfo','Grades'(推荐)
- create 'Student',{NAME=>'StuInfo',VERSIONS=>5},{NAME=>'Grades',VERSIONS=>5}
(3)修改表
- 修改表中列族的参数信息
alter 'Student',{NAME=>'Grades',VERSIONS=3}
- 增加列族
alter 'Student','gender'
- 移除或删掉已有的列族(注:删除列表中,表中至少有两个列族组成)
alter 'Student',{NAME=>'gender',METHOD=>'delete'}
或 alter 'Student','delete'=>'gender'
(4)删除表
- 先禁用表,才能删除:disable '表名'
- 删除表:drop '表名'
- 清空表的数据:truncate '表名'
- 统计表内数据:count '表名'
- 检查表的状态,是否被禁用:enable '表名'
二、数据操作(数据的增删改查)
1、 增加数据
put '表名','行键','列族:列限定符','单元格值',时间戳
例子:
- put 'student','001','StuInfo:Name','Alice',1
- put 'student','001','StuInfo:Age','18'
2、删除数据
delete '表名','行键','列族<:列限定符>',<时间戳> (<>可忽略)
- delete 'Student','0001','Grades'
3、数据查询
(1)get命令
get '表名','行键','列族<:列限定符>',<时间戳>
例子:get 'Student','001',{COLUMN=>'Grades',VERSIONS=>2}
(2)scan命令
scan '表名',{<列族:列限定符,时间戳>}
(1)扫描全表:scan 'student'
(2) 指定列族名称:scan 'student',{COLUMN=>'stuinfo'}
(3)指定列族和列的名称:scan 'student',{COLUMN=>'StuInfo:Name'}
(4)指定输出行数:scan 'student',{LIMT=>1}
(5)指定输出行键范围:scan 'student',{STARTROW=>'001',ENDROW=>'003'}
三、过滤器
1、过滤器语法格式
scan/get '表名',{FILTER=>"过滤器(比较运算器,'比较器')"}
常用比较运算符、比较器:
2、过滤器种类
(1)RowFilter过滤器:针对行键进行字符串比较和过滤
例子:
例1:显示行键前缀为0开头的键值对;
例2:显示行键字节顺序大于002的键值对;
(2)PrefixFilter:行键前缀过滤器
例:扫描前缀为001的行键
(3)KeyOnlyFilter过滤器:扫描全表,显示每个逻辑行的第一个键值对
(4)FirstKeyOnlyFilter过滤器:扫描全表,显示每个逻辑行的第一个键值对
(5)InclusiveStopFilter:替代ENDROW返回终止条件行
例:扫描显示行键001到002范围内的键值对
(6)FamilyFilter:针对列族进行比较和过滤。
例:显示列族前缀为stu开头的键值对
(7)QualifierFilter:列标识过滤器
例:显示列名为name的记录
(8)ColumnPrefixFilter:对列名前缀进行过滤
例:显示列名为name的记录;
(9)MultipleColumnPrefixFilter:可以指定多个前缀
(10)ColumnRangeFilter :设置范围按字典序对列名进行过滤
(11)ValueFilter :值过滤器
例:查询值等于19的所有键值对
(12)SingleColumnValueFilter :在指定的列族和列中进行值过滤器
(13)ColumnCountGetFilter :限制每个逻辑行返回的键值对数
例:返回行键为001的前3个键值对
(14)PageFilter :基于行的分页过滤器,设置返回行数
例:显示一行
(15)ColumnPaginationFilter :基于列的进行分页过滤器,需要设置偏移量与返回数量
例:显示每行第1列之后的2个键值对