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)-数据模型与操作的更多相关文章

  1. 从零自学Hadoop(20):HBase数据模型相关操作上

    阅读目录 序 介绍 命名空间 表 系列索引 本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 文章是哥(mephisto)写的,SourceLink 序 ...

  2. 从零自学Hadoop(21):HBase数据模型相关操作下

    阅读目录 序 变量 数据模型操作 系列索引 本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 文章是哥(mephisto)写的,SourceLink 序 ...

  3. HBase篇(1)-特性与应用场景

    [每日五分钟搞定大数据]系列,HBase第一篇 结束了Zookeeper篇, 接下来我们来说下Google三驾马车之一BigTable的开源实现:HBase,要讲的内容暂定如下: 这是第一篇我们先不聊 ...

  4. HBase介绍 (1)---数据模型

    http://blog.csdn.net/heyutao007/article/details/5766896 BigTable是什么?Google的Paper对其作了充分的说明.字面上看就是一张大表 ...

  5. Python之路【第九篇】:Python操作 RabbitMQ、Redis、Memcache、SQLAlchemy

    Python之路[第九篇]:Python操作 RabbitMQ.Redis.Memcache.SQLAlchemy   Memcached Memcached 是一个高性能的分布式内存对象缓存系统,用 ...

  6. Hbase深入学习(六) Java操作HBase

    Hbase深入学习(六) ―― Java操作HBase 本文讲述如何用hbase shell命令和hbase java api对hbase服务器进行操作. 先看以下读取一行记录hbase是如何进行工作 ...

  7. Oracle知识梳理(三)操作篇:SQL基础操作汇总

    Oracle知识梳理(三)操作篇:SQL基础操作汇总 一.表操作 1.表的创建(CREATE TABLE): 基本语句格式:       CREATE TABLE  table_name ( col_ ...

  8. Hbase到Solr同步常用操作

    Hbase到Solr同步常用操作 1. 整体流程 2. 常用操作 Hbase常用操作 Solr常用操作 hbase-index常用操作 3. 其他资料 Lily HBase Indexer使用整理 h ...

  9. 小白两篇博客熟练操作MySQL 之 第一篇

    小白两篇博客熟悉操作MySQL  之   第一篇 一.概述 1. 什么是数据库? 答: 储存数据的仓库, 如: 在ATM的事例中创建的一个db 目录, 称为数据库 2. 什么是Mysql, Oracl ...

随机推荐

  1. php post接口,注册功能

    功能描述:仅输入手机号和密码,实现注册功能.手机号有简单的验证,不可重复输入,否则会报500错误. 在使用 RestClient 进行post测试时,如果你把参数放在 [Headers]区块了,那么, ...

  2. Linux 中提高的 SSH 的安全性

    SSH 是远程登录 Linux 服务器的最常见的方式.且 SSH 登录的时候要验证的,相对来讲会比较安全.那只是相对,下面会介绍一些方式提高 SSH 的安全性 SSH 的验证 而SSH 登录时有两种验 ...

  3. mssql sqlserver 禁止删除数据表中指定行数据(转自:http://www.maomao365.com/?p=5323)

    转自:http://www.maomao365.com/?p=5323 摘要:下文主要讲述,如何禁止删除数据表中指定行数据 最近收到用户一个需求,禁止所有人删除”表A”中,ID 为1.2.3.4.5的 ...

  4. 消除Warning: Using a password on the command line interface can be insecure的提示

    最近在部署Zabbix时需要用脚本取得一些MySQL的返回参数,需要是numberic格式的,但是调用脚本时总是输出这一句: Warning: Using a password on the comm ...

  5. IO Redirect 与 Pipe

    对于任何一个进程,在启动时,都会打开三个流:stdin(标准输入), stdout(标准输出), stderr(标准错误输出).Stdout,stderr是process与Display之间,stdi ...

  6. June 7. 2018 Week 23rd Thursday

    Half is worse than none at all. 一知半解比一无所知更痛苦. From Westworld. If we go looking for the truth, get th ...

  7. 【文学文娱】《屌丝逆袭》-出任CEO、迎娶白富美、走上人生巅峰

    本文地址:http://www.cnblogs.com/aiweixiao/p/7759790.html 原文地址:(微信公众号) 原创 2017-10-30 微信号wozhuzaisi 程序员的文娱 ...

  8. Nginx 安装配置

    Nginx("engine x")是一款是由俄罗斯的程序设计师Igor Sysoev所开发高性能的 Web和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器. ...

  9. 关于陌生的依赖模块,如withStyles、react-apollo等

    有自己不认识的依赖,可参考的学习方式: 1.各大技术分享网站的文章(最快) 2.npm官网下的文档(最全)

  10. 设计模式のPrototypePattern(原型模式)----创建模式

    一.产生的背景 这种模式是实现了一个原型接口,该接口用于创建当前对象的克隆.当直接创建对象的代价比较大时,则采用这种模式.例如,一个对象需要在一个高代价的数据库操作之后被创建.我们可以缓存该对象,在下 ...