赞
踩
HBase是采用java语言编写的一款 apache 开源的基于HDFS的NoSQL型数据库,不支持 SQL,不支持事务,不支持Join操作,没有表关系
1.不支持事务
2.主要存储结构化数据以及半结构化的数据
3.HBase中数据存储都是以字节的形式来存储的
4.HBase是易于扩展的
1- 基于rowkey(行键|主键)读取
2- 基于rowkey的range范围读取
3- 扫描全表数据
每一个单元格背后都是具有时间戳的概念的, 默认情况下, 时间戳为插入数据的时间, 当然也可以自定义
如何确定一个唯一的单元格呢? rowkey + 列族 + 列名 + 值
进入shell
hbase shell
查看整个集群的状态信息
status
如何查看帮助文档信息
查看整个帮助文档
help查看某一个具体的命令如何使用
help ‘命令名称’
如何查看当前hbase中有那些表呢?
list
如何创建一张表
格式:
create ‘表名’,‘列族1’,‘列族2’ …
或者
create ‘表名’,{NAME=>‘列族1’},{NAME=>‘列族2’} …
如何向表中插入数据
格式:
put ‘表名’,‘rowkey名称’,‘列族名:列名’,‘值’
如何从表中获取某一条数据呢? 基于rowkey查询
格式:
get ‘表名’,‘rowkey名称’, [‘列族’ | ‘列族:列名’ …]
说明:
[] 表示是可选
如何修改数据呢? 修改数据的操作 与 添加数据的操作是一致的, 只需要保证rowkey一样 就是修改数据
如何删除数据的操作:
格式:
delete ‘表名’,‘rowkey名称’,‘列族:列名’
deleteall ‘表名’,‘rowkey名称’,‘列族:列名’
truncate ‘表名’ 清空表
说明:
1) delete操作, 仅支持删除某一个列下的数据, 仅会删除当前这个版本, 恢复上一个版本
2) deleteall操作, 在删除某一个列数据的时候, 直接将其所有的历史版本全部都删除
3) deleteall操作, 在不指定列族和列名, 仅指定rowkey的时候, 删除整行
说明:
deleteall操作在hbase2.x以上的版本提供的
注意:
truncate操作 一般不使用, 因为此操作在重新建表的时候, 会与原来的表不一致. 比如一些设置参数信息,执行truncate全部都还原了
如何删除表
格式:
drop ‘表名’
注意: 在删除hbase表之前, 必须要先禁用表
禁用表: disable ‘表名’
启动表: enable ‘表名’
判断表是否启用: is_enabled ‘表名’
判断表是否禁用: is_disabled ‘表名’
如何查看表的结构
格式:
describe ‘表名’
如何查看表中有多少条数据:
count ‘表名’
如何通过扫描的方式查询数据, 以及根据范围查询数据
准备工作: 插入一部分数据 put 'test01','rk0001','f1:name','zhangsan' put 'test01','rk0001','f1:age','20' put 'test01','rk0001','f1:birthday','2020-10-10' put 'test01','rk0001','f2:sex','nan' put 'test01','rk0001','f2:address','beijing' put 'test01','rk0002','f1:name','lisi' put 'test01','rk0002','f1:age','25' put 'test01','rk0002','f1:birthday','2005-10-10' put 'test01','rk0002','f2:sex','nv' put 'test01','rk0002','f2:address','shanghai' put 'test01','rk0003','f1:name','王五' put 'test01','rk0003','f1:age','28' put 'test01','rk0003','f1:birthday','1993-10-25' put 'test01','rk0003','f2:sex','nan' put 'test01','rk0003','f2:address','tianjin' put 'test01','0001','f1:name','zhaoliu' put 'test01','0001','f1:age','25' put 'test01','0001','f1:birthday','1995-05-05' put 'test01','0001','f2:sex','nan' put 'test01','0001','f2:address','guangzhou' 格式: scan '表名' , {COLUMNS=>['列族' | '列族:列名' ....], STARTROW=>'起始rowkey值' ,ENDROW=>'结束rowkey值', FORMATTER=>'toString',LIMIT=>N} 注意 此处 [] 是格式要求, 必须存在 范围检索是包头不包尾
whoami: 查看当前登录用户
exists: 查看表是否存在
alter: 用来执行修改表的操作
增加列族:
alter ‘表名’ ,NAME=>‘新的列族’
删除列族:
alter ‘表名’,‘delete’=>‘旧的列族’
作用:补充hbase的查询方式
格式: scan '表名',{FILTER=>"过滤器(比较运算符,'比较器表达式')"} 在hbase中常用的过滤器: rowkey过滤器: RowFilter: 实现根据某一个rowkey过滤数据 PrefixFilter: rowkey前缀过滤器 列族过滤器: FamilyFilter: 列族过滤器 列名过滤器: QualifierFilter : 列名过滤器, 显示对应列的数据 列值过滤器: ValueFilter: 列值过滤器, 找到符合条件的列值 SingleColumnValueFilter: 在指定列族和列名下, 查询符合对应列值数据的整行数据 SingleColumnValueExcludeFilter : 在指定列族和列名下, 查询符合对应列值数据的整行数据,结果不包含过滤字段 其他过滤器: PageFilter : 用于分页过滤器 比较运算符: > < >= <= != = 比较器: BinaryComparator: 用于进行完整的匹配操作 BinaryPrefixComparator : 匹配指定的前缀数据 NullComparator : 空值匹配操作 SubstringComparator: 模糊匹配 比较器表达式: BinaryComparator binary:值 BinaryPrefixComparator binaryprefix:值 NullComparator null SubstringComparator substring:值 参考地址: http://hbase.apache.org/2.2/devapidocs/index.html 从这个地址下, 找到对应过滤器, 查看其构造, 根据构造编写filter过滤器即可 案例: 需求一: 找到在列名中包含 字母 e 列名有哪些 scan 'test01',{FILTER=>"QualifierFilter(=,'substring:e')"} 需求二: 查看rowkey以rk开头的数据 scan 'test01',{FILTER=>"PrefixFilter('rk')"} scan 'test01',{FILTER=>"RowFilter(=,'binaryprefix:rk')"} 需求三: 查询 年龄大于等于25岁的数据 scan 'test01',{FILTER=>"SingleColumnValueFilter('f1','age',>=,'binary:25')"} scan 'test01',{FILTER=>"SingleColumnValueExcludeFilter('f1','age',>=,'binary:25')"}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。