HBase篇(2)-数据模型与操作
HBase其实就是一个数据库,无非就是存储和增删改查,那我们先从数据模型说起把
这里有一张表,是用关系型数据库的思维画出来的表,这样比较易于理解:

概念
Table(表格)
没啥说的,和关系型数据库一样,由多行组成
Row(行)
包含一个key和一个或者多个列。行按照RowKey字典序存储在表格中。
Column Family(列族)
可以理解为一组列的集合,HBase官方建议尽量的减少ColumnFamily的数量。
Column Qualifier(列)
一个 Column Family 下面有多个Column Qualifier,
Timestamp(时间戳)
时间戳是写在值旁边的一个用于区分值的版本的数据。可以开发者自己指定,默认情况下,时间戳表示的是当数据写入时RegionSever的时间点。
Cell(单元)
单元是由行、列族、列、值和代表值版本的时间戳组成的。举个例子:
A column=CF1:C1_1, timestamp=T1, value=nice
实际模型
上面表的其中一行,在hbase shell 中显示实际是这样的。
hbase(main):006:0> scan 'table_name'
ROW COLUMN+CELL
A column=CF1:C1_1, timestamp=T1, value=nice
A column=CF1:C1_2, timestamp=T1, value=handsome
A column=CF1:C2_1, timestamp=T1, value=china
A column=CF1:C2_2, timestamp=T1, value=guangdong
可见
- 稀疏列存储:如果RowKey=B;Column=C1_1 这一格是空的,不会造成存储空间碎片,只会少存一行
B column=CF1:C1_1, timestamp=T1, value=nice
- 添加列方便:只需指定列名列族名,column=CF1:C1_1
- rowkey字典序排列
- 每个value都有一个时间戳
操作汇总
注意后方高能,是一些常用的命令,看完可以收藏一波。
增删改查
创建表
create '表名称', '列族名称1','列族名称2','列族名称N'
添加记录/更新记录
put '表名称', '行名称', '列名称:', '值'
查看记录
get '表名称', '行名称'
查看表中的记录总数
count '表名称'
删除记录
delete '表名' ,'行名称' , '列名称'
删除一张表
先要屏蔽该表,才能对该表进行删除,第一步 disable '表名称' 第二步 drop '表名称'
查看所有记录
scan "表名称"
查看某个表某个列中所有数据
scan "表名称" , {COLUMNS=>'列族名称:列名称'}
过滤器
RowFilter
通过rowkey过滤,匹配出rowkey中含uncle的数据。
> scan 'table_name', FILTER=>"RowFilter(=,'substring:uncle')"
通过rowkey过滤,匹配出rowkey等于uncle666的数据。
> scan 'table_name', FILTER=>"RowFilter(=,'binary:uncle666')"
通过rowkey过滤,匹配出rowkey小于等于uncle666的数据。
> scan 'table_name', FILTER=>"RowFilter(<=,'binary:uncle666')"
匹配从rowkey为uncle666开始读50行
> scan 'table_name',{COLUMNS=>['cf:column'],LIMIT => 50,STARTROW=>'uncle666'}
匹配时间范围
> scan 'table_name',{COLUMNS=>['cf:column'],LIMIT => 50,TIMERANGE=>'1533530400000,1535930400000'}
PrefixFilter
通过rowkey前缀过滤,匹配出rowkey前缀为666的数据。
> scan 'table_name', FILTER=>"PrefixFilter('666')"
ValueFilter
通过value过滤,匹配出value含uncle的数据。
> scan 'table_name', FILTER=>"ValueFilter(=,'substring:uncle')"
FamilyFilter
通过列簇过滤,匹配出列簇含f的数据。
> scan 'table_name', FILTER=>"FamilyFilter(=,'substring:f')"

HBase篇(2)-数据模型与操作的更多相关文章
- 从零自学Hadoop(20):HBase数据模型相关操作上
阅读目录 序 介绍 命名空间 表 系列索引 本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 文章是哥(mephisto)写的,SourceLink 序 ...
- 从零自学Hadoop(21):HBase数据模型相关操作下
阅读目录 序 变量 数据模型操作 系列索引 本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 文章是哥(mephisto)写的,SourceLink 序 ...
- HBase篇(1)-特性与应用场景
[每日五分钟搞定大数据]系列,HBase第一篇 结束了Zookeeper篇, 接下来我们来说下Google三驾马车之一BigTable的开源实现:HBase,要讲的内容暂定如下: 这是第一篇我们先不聊 ...
- HBase介绍 (1)---数据模型
http://blog.csdn.net/heyutao007/article/details/5766896 BigTable是什么?Google的Paper对其作了充分的说明.字面上看就是一张大表 ...
- Python之路【第九篇】:Python操作 RabbitMQ、Redis、Memcache、SQLAlchemy
Python之路[第九篇]:Python操作 RabbitMQ.Redis.Memcache.SQLAlchemy Memcached Memcached 是一个高性能的分布式内存对象缓存系统,用 ...
- Hbase深入学习(六) Java操作HBase
Hbase深入学习(六) ―― Java操作HBase 本文讲述如何用hbase shell命令和hbase java api对hbase服务器进行操作. 先看以下读取一行记录hbase是如何进行工作 ...
- Oracle知识梳理(三)操作篇:SQL基础操作汇总
Oracle知识梳理(三)操作篇:SQL基础操作汇总 一.表操作 1.表的创建(CREATE TABLE): 基本语句格式: CREATE TABLE table_name ( col_ ...
- Hbase到Solr同步常用操作
Hbase到Solr同步常用操作 1. 整体流程 2. 常用操作 Hbase常用操作 Solr常用操作 hbase-index常用操作 3. 其他资料 Lily HBase Indexer使用整理 h ...
- 小白两篇博客熟练操作MySQL 之 第一篇
小白两篇博客熟悉操作MySQL 之 第一篇 一.概述 1. 什么是数据库? 答: 储存数据的仓库, 如: 在ATM的事例中创建的一个db 目录, 称为数据库 2. 什么是Mysql, Oracl ...
随机推荐
- Pycharm启动后加载anaconda一直updating indices造成Pycharm闪退甚至电脑崩溃
可能跟anaconda文件夹有一定关系 网上找找解决方案,似乎很多人有同样的困扰! 知乎-pycharm启动后总是不停的updating indices...indexing? stackoverfl ...
- Bootstrap table 分页 In asp.net MVC
中文翻译文档: http://blog.csdn.net/rickiyeat/article/details/56483577 版本说明: Jquery v2.1.1 Bootstrap V3.3.7 ...
- js 时间转字符串,转成yyyy-MM-dd HH:mm:SS格式
// 时间转字符串,转成yyyy-MM-dd HH:mm:SS格式 function dateToStr(datetime){ var dateTime = new Date(datetime); v ...
- [20181130]如何猜测那些值存在hash冲突.txt
[20181130]如何猜测那些值存在hash冲突.txt --//今年6月份开始kerrycode的1个帖子提到子查询结果缓存在哈希表中情况:--//链接:http://www.cnblogs.co ...
- JS实现定时器
导出:jquery.timers-1.2.js jQuery Timers提供了三个函式 1. everyTime(时间间隔, [定时器名称], 函式名称, [次数限制], [等待函式程序完成])2. ...
- 用beamoff给VMware的Mac OS X 10.10.x加速
前言 今天刚在VMware里装了个Yosemite,然后测试了下看电影,真j8卡,试了下在vm里打开3d加速,然并卵,直接显示不能打开3d加速,然后找了下发现有个vga的什么软件,是vmware里的显 ...
- DNS区域传送漏洞实验以及二级域名爆破
DNS区域传送漏洞实验以及二级域名爆破 目录: 1.DNS服务器的域传送漏洞(nslookup交互式.非交互式.批处理三种方式) 2.写个二级域名爆破脚本 一.DNS服务器的域传送漏洞 实验环境: 服 ...
- Linux安装Python3后,如何使用pip命令
系统环境:CentOS7.4 已安装好Python3.6.5 Python3.6.5自带pip 使用pip安装第三方库,可运行指令,例如安装paramiko库: python -m pip insta ...
- Linux端口映射,80端口映射到8080端口
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080 其中eth0为外网网卡名称 ipt ...
- Spring事务管理2--声明式
简述 1.Spring 的声明式事务管理在底层是建立在 AOP 的基础上.其本质是在方法前后进行拦截,然后在目标方法开始之前创建一个事务,在执行这目标方法结束后,根据执行情况提交或进行回滚事务. 2. ...
