HBase表模型



创建一个hbase表,必须要有表名列族名

列族 —— columnFamily,就是上图中的Column Family1 userInfo store1 store2Column Family2 addressInfo store3

—— column,就相当于mysql和hive中的字段名称,图中nameageaddressregtime等都是列。每一个列必然归属于某一个列族

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列,并插入 rowKeyrk0001zhangsan 的数据

    put 'user','rk0001','info:name','zhangsan'



    二、向 列族info 中添加 gender列,并插入 rowKeyrk0001female 的数据

    put 'user','rk0001','info:gender','female'



    三、向 列族info 中添加 age列,并插入 rowKeyrk000120 的数据

    put 'user','rk0001','info:age',20



    四、向 列族data 中添加 pic列,并插入 rowKeyrk0001picture 的数据

    put 'user','rk0001','data:pic','picture'

  • 查询数据



    HBase的查询比较脆弱,不支持SELECT * FROM tbl_nameLEFT 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】表模型和基本操作介绍的更多相关文章

  1. Hbase:简单介绍一下Hbase表的结构

    HBase 是一个NoSQL数据库,用于处理海量数据,可以支持10亿行百万列的大表,下面我就和大家分享一下数据是如何存放在HBase表中的 为了更好的理解HBase表的思路,先回顾一下关系数据库中表的 ...

  2. 数据分页处理系列之二:HBase表数据分页处理

      HBase是Hadoop大数据生态技术圈中的一项关键技术,是一种用于分布式存储大数据的列式数据库,关于HBase更加详细的介绍和技术细节,朋友们可以在网络上进行搜寻,笔者本人在接下来的日子里也会写 ...

  3. hbase操作(shell 命令,如建表,清空表,增删改查)以及 hbase表存储结构和原理

    两篇讲的不错文章 http://www.cnblogs.com/nexiyi/p/hbase_shell.html http://blog.csdn.net/u010967382/article/de ...

  4. HBase表数据分页处理

    HBase表数据分页处理 HBase是Hadoop大数据生态技术圈中的一项关键技术,是一种用于分布式存储大数据的列式数据库,关于HBase更加详细的介绍和技术细节,朋友们可以在网络上进行搜寻,笔者本人 ...

  5. HBase存储及读写原理介绍

    一.HBase介绍及其特点 HBase是一个开源的非关系型分布式数据库,它参考了谷歌的BigTable建模,实现的编程语言为Java.它是Apache软件基金会的Hadoop项目的一部分,运行于HDF ...

  6. HBase(三): Azure HDInsigt HBase表数据导入本地HBase

    目录: hdfs 命令操作本地 hbase Azure HDInsight HBase表数据导入本地 hbase hdfs命令操作本地hbase: 参见  HDP2.4安装(五):集群及组件安装 , ...

  7. ThinkPHP 的模型使用详细介绍--模型的核心(七)

    原文:ThinkPHP 的模型使用详细介绍--模型的核心(七) 注意:本节是ThinkPhp框架对数据操作的核心处理部分 大家还是在这里看清楚可以将其剪切放到代码编辑器中查看 本章节给大家着重介绍模型 ...

  8. SQLALchemy中关于复杂关系表模型的映射处理

    映射在第五步,我们还是一步一步来哈 一. 关系介绍 举一个比较经典的关系,部门与员工(以下是我的需求情况,算是把该有的关系都涉及到了) 1.每个部门会有很多成员(这里排除一个成员属于多个部门的情况) ...

  9. hbase表的高性能设计

    第7章 HBase优化 7.1 高可用 在HBase中Hmaster负责监控RegionServer的生命周期,均衡RegionServer的负载,如果Hmaster挂掉了,那么整个HBase集群将陷 ...

随机推荐

  1. 新时代前端必备神器 Snapjs之弹动效果

    有人说不会 SVG 的前端开发者不叫开发者,而叫爱好者.前端不光是 Angularjs 了,这时候再不学 SVG 就晚了!(如果你只会 jQuery 就当我没说...)这里我就给大家分享一个前几天在别 ...

  2. U - Obtain a Permutation CodeForces - 1294E 思维

    题解: 注意每一列与每一列之间互不影响,所以贪心地求出没一列的最小操作值,然后累加起来. 怎么求没一列的最小值呢?维护一个数组same表示其中same[i]=j表示将该序列向上翻滚i次有j个元素归位, ...

  3. Rescue BFS+优先队列 杭电1242

    思路 : 优先队列 每次都取最小的时间,遇到了终点直接就输出 #include<iostream> #include<queue> #include<cstring> ...

  4. Spark SQL源码剖析(一)SQL解析框架Catalyst流程概述

    Spark SQL模块,主要就是处理跟SQL解析相关的一些内容,说得更通俗点就是怎么把一个SQL语句解析成Dataframe或者说RDD的任务.以Spark 2.4.3为例,Spark SQL这个大模 ...

  5. Spring IoC getBean 方法详解

    前言 本篇文章主要介绍 Spring IoC 容器 getBean() 方法. 下图是一个大致的流程图: 正文 首先定义一个简单的 POJO,如下: public class User { priva ...

  6. springboot集成swagger2多模块中文配置详细步骤,解决集成mybatis或mybatis-plus无法正常使用问题

    pom.xm里写入swagger依赖: <dependency> <groupId>io.springfox</groupId> <artifactId> ...

  7. Postman:Pre-request Script

    Pre-request Script:前置处理,会在发出请求前执行,主要用在生成一些动态参数. 例如:api接口都会有签名校验,这个校验在我们api测试的时候很不方便,这里可以利用 postman 前 ...

  8. [javascript]各种页面定时跳转(倒计时跳转)代码总结

    (1)使用setTimeout函数实现定时跳转(如下代码要写在body区域内) <script type="text/javascript"> //3秒钟之后跳转到指定 ...

  9. 【5min+】为你的.NET应用进行一次全方位体检

    系列介绍 [五分钟的dotnet]是一个利用您的碎片化时间来学习和丰富.net知识的博文系列.它所包含了.net体系中可能会涉及到的方方面面,比如C#的小细节,AspnetCore,微服务中的.net ...

  10. 干货福利:如何使用Python中Django模板?

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: 穆胜亮 篇文章将学习如何使用Django模板.模板是在Django ...