【HBase】表模型和基本操作介绍
HBase表模型

创建一个hbase表,必须要有表名和列族名
列族 —— columnFamily,就是上图中的Column Family1 userInfo store1 store2、Column Family2 addressInfo store3等
列 —— column,就相当于mysql和hive中的字段名称,图中name、age、address、regtime等都是列。每一个列必然归属于某一个列族
rowKey —— 行键,类似于mysql表中的主键
timeStamp —— 每条数据产生的时间戳
versionNum —— 每条数据当前的版本
cell —— 单元格,就是hbase表中的数据值
常用Shell操作
进入hbase客户端命令操作界面
bin/hbase shell
会出现下图,在hbase(main):001:0>后输入命令即可

查看帮助命令
help查看当前数据库中有哪些表
list创建一张表
create 'user','info','data'表名为user,列族为info、data
还有一种写法create 'user',{NAME => 'info', VERSIONS => 3},{NAME => 'data'}添加数据
以下均为向user表中插入数据
一、向 列族info 中添加 name列,并插入 rowKey 为 rk0001,值为 zhangsan 的数据
put 'user','rk0001','info:name','zhangsan'
二、向 列族info 中添加 gender列,并插入 rowKey 为 rk0001,值为 female 的数据
put 'user','rk0001','info:gender','female'
三、向 列族info 中添加 age列,并插入 rowKey 为 rk0001,值为 20 的数据
put 'user','rk0001','info:age',20
四、向 列族data 中添加 pic列,并插入 rowKey 为 rk0001,值为 picture 的数据
put 'user','rk0001','data:pic','picture'查询数据
HBase的查询比较脆弱,不支持SELECT * FROM tbl_name、LEFT JOIN
第一种查询方式:get rowKey—— 通过rowKey直接获取数据,效率最高
第二种查询方式:scan startRowKey endRowKey—— 根据rowKey的范围值进行查询,rowKey是按照字典顺序进行排列
第三种查询方式:scan tbl_name—— 全表扫描,一般没人用
查询实例:
1.利用 get 查询数据:
(1)get 'user','rk0001'查询rowKey为rk0001的所有信息
(2)get 'user','rk0001','info'查询rowKey为rk0001,info列族的所有信息,如果要查多个列族,在后面追加即可:get 'user','rk0001','info','data'
(3)get 'user','rk0001','info:name','info:age'查询rowKey为rk0001,info列族中name列和age列的所有信息,查询列族中列的信息还有两种写法:get 'user', 'rk0001', {COLUMN => ['info', 'data']}/get 'user', 'rk0001', {COLUMN => ['info:name', 'data:pic']},但是一般查询带有rowKey数值时,都可以用第一种最简便的写法,怎么简便易懂易复用怎么来
(4)get 'user', 'rk0001', {FILTER => "ValueFilter(=, 'binary:zhangsan')"}使用过滤器,ValueFilter 是用来查询值的过滤器,binary 意思是二进制,使用过滤器还可以进行模糊查询,比如查询列名中含有字母’a’的数据:get 'user', 'rk0001', {FILTER => "(QualifierFilter(=,'substring:a'))"}
2.利用 scan 查询数据:
(1)scan 'user', {COLUMNS => 'info'}查询user表中info列族的数据,如果要查询多个列族,在后面追加即可:scan 'user', {COLUMNS => ['info', 'data']}
(2)scan 'user', {COLUMNS => ['info:name', 'data:pic']}查询列族中某个列名的信息
(3)scan 'user', {COLUMNS => 'info', RAW => true, VERSIONS => 5}VERSIONS指的是表中数据的版本号,这里是查询最近5个版本的数据
(4)scan 'user', {COLUMNS => ['info', 'data'], FILTER => "(QualifierFilter(=,'substring:a'))"}模糊查询,查询info和data列族中列名含有字母’a’的数据
(5)scan 'people', {COLUMNS => 'info', STARTROW => 'rk0001', ENDROW => 'rk0003'}范围查询,查询info列族中rk0001到rk0003之间的数据,除了可以指定rowKey的范围,还可以指定时间戳的范围:scan 'user', {TIMERANGE => [1392368783980, 1392380169184]}
(6)scan 'user',{FILTER=>"PrefixFilter('rk')"}查询rowKey中以’rk’开头的字母,Perfix是前缀的意思更新数据
1.更新数据和添加数据的命令一样,如果没有数据则添加,有数据则更新
2.alter 'user', NAME => 'info', VERSIONS => 5更新info列族的版本号
3.删除数据
(1)delete 'user', 'rk0001', 'info:name'删除user表中rowKey为rk0001,info列族中name列的数据,还可以在后面追加更多的属性来指定更精确的数据,比如时间戳:delete 'user', 'rk0001', 'info:name', 1392383705316
(2)alter 'user', NAME => 'f1', METHOD => 'delete'/alter 'user', 'delete' => 'f1'两个命令都是删除一个列族
(3)truncate 'user'清空表数据
4.删除表,首先要先禁用表:disable 'user',然后才能删除表:drop 'user'显示服务器状态
status 'host_name'显示HBase当前用户
whoami统计指定表数据有多少条
count 'tbl_namer'展示表结构信息
describe 'tbl_name'检查表是否存在
exist 'tbl_name'查看表是启用状态还是禁用状态
is_enabled 'tbl_name'是否启用
is_disabled 'tbl_name'是否禁用
【HBase】表模型和基本操作介绍的更多相关文章
- Hbase:简单介绍一下Hbase表的结构
HBase 是一个NoSQL数据库,用于处理海量数据,可以支持10亿行百万列的大表,下面我就和大家分享一下数据是如何存放在HBase表中的 为了更好的理解HBase表的思路,先回顾一下关系数据库中表的 ...
- 数据分页处理系列之二:HBase表数据分页处理
HBase是Hadoop大数据生态技术圈中的一项关键技术,是一种用于分布式存储大数据的列式数据库,关于HBase更加详细的介绍和技术细节,朋友们可以在网络上进行搜寻,笔者本人在接下来的日子里也会写 ...
- hbase操作(shell 命令,如建表,清空表,增删改查)以及 hbase表存储结构和原理
两篇讲的不错文章 http://www.cnblogs.com/nexiyi/p/hbase_shell.html http://blog.csdn.net/u010967382/article/de ...
- HBase表数据分页处理
HBase表数据分页处理 HBase是Hadoop大数据生态技术圈中的一项关键技术,是一种用于分布式存储大数据的列式数据库,关于HBase更加详细的介绍和技术细节,朋友们可以在网络上进行搜寻,笔者本人 ...
- HBase存储及读写原理介绍
一.HBase介绍及其特点 HBase是一个开源的非关系型分布式数据库,它参考了谷歌的BigTable建模,实现的编程语言为Java.它是Apache软件基金会的Hadoop项目的一部分,运行于HDF ...
- HBase(三): Azure HDInsigt HBase表数据导入本地HBase
目录: hdfs 命令操作本地 hbase Azure HDInsight HBase表数据导入本地 hbase hdfs命令操作本地hbase: 参见 HDP2.4安装(五):集群及组件安装 , ...
- ThinkPHP 的模型使用详细介绍--模型的核心(七)
原文:ThinkPHP 的模型使用详细介绍--模型的核心(七) 注意:本节是ThinkPhp框架对数据操作的核心处理部分 大家还是在这里看清楚可以将其剪切放到代码编辑器中查看 本章节给大家着重介绍模型 ...
- SQLALchemy中关于复杂关系表模型的映射处理
映射在第五步,我们还是一步一步来哈 一. 关系介绍 举一个比较经典的关系,部门与员工(以下是我的需求情况,算是把该有的关系都涉及到了) 1.每个部门会有很多成员(这里排除一个成员属于多个部门的情况) ...
- hbase表的高性能设计
第7章 HBase优化 7.1 高可用 在HBase中Hmaster负责监控RegionServer的生命周期,均衡RegionServer的负载,如果Hmaster挂掉了,那么整个HBase集群将陷 ...
随机推荐
- unity使用Animator做一个简单的动画
1.在unity的物体上添加Animator组件 2.在Project下的Assets下添加Animator Controller 3.在Animator Controller添加动作 4.在动作之间 ...
- Daily Scrum 12/29/2015
Process: Zhaoyang: Add the Time bar feature in the APP and complete the Speech API. Yandong: Do some ...
- ThinkPHP6.0学习笔记-验证器
验证器 By:Mirror王宇阳 验证器定义 验证器的使用,必须定义它:系统提供了一条命令直接生产一个验证器类: php think make:validate User 自动再应用目录下生成一个va ...
- Windows线程+进程通信
一 Windows线程进程 1)定义 按照MS的定义, Windows中的进程简单地说就是一个内存中的可执行程序, 提供程序运行的各种资源. 进程拥有虚拟的地址空间, 可执行代码, 数据, 对象句柄集 ...
- Metasploit渗透测试环境搭建
渗透测试实验环境搭建 下载虚拟机镜像 5个虚拟机镜像,其中Linux攻击机我选择用最新的kali Linux镜像,其余的均使用本书配套的镜像. 网络环境配置 VMware虚拟网络编辑器配置: 将VMn ...
- (转)SQLite数据库的加密
1.创建空的SQLite数据库. //数据库名的后缀你可以直接指定,甚至没有后缀都可以 //方法一:创建一个空sqlite数据库,用IO的方式 FileStream fs = File.Create( ...
- Ubuntu搭建NTP服务器
NTP简介 NTP是Network Time Protocol的缩写,又称为网络时间协议.是用来使计算机时间同步化的一种协议,它可以使计算机对其服务器或时钟源(如石英钟,GPS等等)做同步化,它可以提 ...
- JavaScript面向对象那些东西-继承
继承 父类里有些属性方法 子类想把父类中的这些属性方法 继承过来给子类自己的实例也用用 ( ps: →_→ 能不能专业点 没文化真可怕 ) 一.原型链继承 // 原型链继承:把子类的原型作为父类的实例 ...
- 导入sql错误
2019独角兽企业重金招聘Python工程师标准>>> 导入sql错误: This function has none of DETERMINISTIC, NO SQL, or RE ...
- C++编程入门题目--No.5
题目: 输入三个整数x,y,z,请把这三个数由小到大输出. 程序分析: 我们想办法把最小的数放到x上,先将x与y进行比较,如果x>y则将x与y的值进行交换, 然后再用x与z进行比较,如果x> ...