HBase表结构设计--练习篇
一、表结构操作
1.建立一个表scores,有两个列族grad和course
[hadoop@weekend01 ~]$ hbase shell
hbase(main):006:0> create 'scores','grade','course'
0 row(s) in 0.4120 seconds
=> Hbase::Table - scores
2.查看Hbase中的所有表
hbase(main):007:0> list
TABLE
hbase_student
my_data
new_scores
scores
student
user
6 row(s) in 0.0150 seconds
=> ["hbase_student", "my_data", "new_scores", "scores", "student", "user"]
3.查看scores表结构
hbase(main):008:0> desc 'scores'
Table scores is ENABLED
scores
COLUMN FAMILIES DESCRIPTION
{NAME => 'course', DATA_BLOCK_ENCODING => 'NONE', BLOOMFILTER => 'ROW', REPLICAT
ION_SCOPE => '0', VERSIONS => '1', COMPRESSION => 'NONE', MIN_VERSIONS => '0', T
TL => 'FOREVER', KEEP_DELETED_CELLS => 'FALSE', BLOCKSIZE => '65536', IN_MEMORY
=> 'false', BLOCKCACHE => 'true'}
{NAME => 'grade', DATA_BLOCK_ENCODING => 'NONE', BLOOMFILTER => 'ROW', REPLICATI
ON_SCOPE => '0', VERSIONS => '1', COMPRESSION => 'NONE', MIN_VERSIONS => '0', TT
L => 'FOREVER', KEEP_DELETED_CELLS => 'FALSE', BLOCKSIZE => '65536', IN_MEMORY =
> 'false', BLOCKCACHE => 'true'}
2 row(s) in 0.0550 seconds
4.查询表scores是否存在
hbase(main):009:0> exists 'scores'
Table scores does exist
0 row(s) in 0.0180 seconds
5.判断表scores是否enable
hbase(main):010:0> is_enabled 'scores'
true
0 row(s) in 0.0160 seconds
6.判断表scores是否disable
hbase(main):011:0> is_disabled 'scores'
false
0 row(s) in 0.0210 seconds
7.使表scores不可用
hbase(main):012:0> disable 'scores'
0 row(s) in 1.3380 seconds
8.恢复表scores可用
hbase(main):013:0> enable 'scores'
0 row(s) in 0.5680 seconds
9.增加一个school列族
hbase(main):002:0> alter 'scores',{NAME=>'school',VERSIONS=>3}
Updating all regions with the new schema...
0/1 regions updated.
1/1 regions updated.
Done.
0 row(s) in 2.3390 seconds
10.删除一个school列族
hbase(main):005:0> alter 'scores',{NAME=>'school',METHOD=>'delete'}
Updating all regions with the new schema...
0/1 regions updated.
1/1 regions updated.
Done.
0 row(s) in 2.1970 seconds
11.删除表scores
操作步骤:先禁用表,再删除表
hbase(main):004:0> disable 'scores' #先将scores表改为offline状态
0 row(s) in 1.3100 seconds
hbase(main):005:0> drop 'scores' #再删除表
0 row(s) in 0.2250 seconds
二、DML操作(数据操纵)
1.添加scores数据
其scores表数据如下:
Tom grade: 5
Tom course:math 97
Tom course:art 87
Tom course:english 80
Jim grade: 4
Jim course:chinese 89
Jim course:english 80
hbase(main):006:0> put 'scores','Tom','grade:','5'
0 row(s) in 0.1810 seconds
hbase(main):007:0> put 'scores','Tom','course:math','97'
0 row(s) in 0.0200 seconds
hbase(main):009:0> put 'scores','Tom','course:art','87'
0 row(s) in 0.0150 seconds
hbase(main):010:0> put 'scores','Tom','course:english','80'
0 row(s) in 0.0070 seconds
hbase(main):012:0> put 'scores','Jim','grade:','5'
0 row(s) in 0.0080 seconds
hbase(main):013:0> put 'scores','Jim','course:chinese','89'
0 row(s) in 0.0110 seconds
hbase(main):014:0> put 'scores','Jim','course:english','80'
0 row(s) in 0.0070 seconds
2.查看数据
a.全表scores扫描
hbase(main):015:0> scan 'scores'
ROW COLUMN+CELL
Jim column=course:chinese, timestamp=1464871444954, value=89
Jim column=course:english, timestamp=1464871467549, value=80
Jim column=grade:, timestamp=1464871414324, value=5
Tom column=course:art, timestamp=1464871299895, value=87
Tom column=course:english, timestamp=1464871325997, value=80
Tom column=course:math, timestamp=1464871198158, value=97
Tom column=grade:, timestamp=1464871151963, value=5
2 row(s) in 0.1160 secondsb.查看表scores中Jim的一行的数据
c.查看一个单元格的数据
hbase(main):016:0> get 'scores','Tom',{COLUMN=>'course:math'}
COLUMN CELL
course:math timestamp=1464871198158, value=97
1 row(s) in 0.0900 seconds
d.查看一个course列族的数据
hbase(main):017:0> scan 'scores',{COLUMN=>'course'}
ROW COLUMN+CELL
Jim column=course:chinese, timestamp=1464871444954, value=89
Jim column=course:english, timestamp=1464871467549, value=80
Tom column=course:art, timestamp=1464871299895, value=87
Tom column=course:english, timestamp=1464871325997, value=80
Tom column=course:math, timestamp=1464871198158, value=97
2 row(s) in 0.0170 seconds
e.查看表scores中的course:english列的数据
hbase(main):019:0> scan 'scores',{COLUMN=>'course:english'}
ROW COLUMN+CELL
Jim column=course:english, timestamp=1464871467549, value=80
Tom column=course:english, timestamp=1464871325997, value=80
2 row(s) in 0.0260 seconds
f.统计表scores的行数
hbase(main):020:0> count 'scores'
2 row(s) in 0.0890 seconds
=> 2
3.修改数据
a.修改scores表中的Tom的math值为100
hbase(main):021:0> put 'scores','Tom','course:math','100'
0 row(s) in 0.0140 seconds
b.修改scores表中列族course的VERSIONS=>3
hbase(main):022:0> alter 'scores',{NAME=>'course',VERSION=>3}
Unknown argument ignored for column family course: 1.8.7
Updating all regions with the new schema...
0/1 regions updated.
1/1 regions updated.
Done.
0 row(s) in 2.2190 seconds
再进行修改cores表中的Tom的math值为100
hbase(main):023:0> put 'scores','Tom','course:math','100'
0 row(s) in 0.0490 seconds
再按VERSIONS=>3查看该表中course:math的值
hbase(main):025:0> get 'scores','Tom',{COLUMN=>'course:math',VERSIONS=>3}
COLUMN CELL
course:math timestamp=1464872264511, value=100
4.删除数据
a.删除scores表Jim的course:chinese的值
hbase(main):027:0> delete 'scores','Jim','course:chinese'
0 row(s) in 0.0310 seconds
b.删除scores表Tom的course:english的值
hbase(main):029:0> delete 'scores','Tom','course:english'
0 row(s) in 0.0080 seconds
c.删除scores表Tom一行
hbase(main):032:0> deleteall 'scores','Tom'
0 row(s) in 0.4160 seconds
d.清空scores表中的内容
hbase(main):031:0> truncate 'scores'
Truncating 'scores' table (it may take a while):
- Disabling table...
- Truncating table...
0 row(s) in 1.5000 seconds
疑难小结:刚开始玩HBase看着文档还不是那么难,真做起来麻烦事还真多,刚开始一直报这个错,没有头绪,百度半天
hbase(main):001:0> list
TABLE
ERROR: Can't get master address from ZooKeeper; znode data == null
这东西让我改好多文件,还是不行,无奈又重新配置了一遍,同学有遇到一样的情况,说是myid文件与zookeeper配置文件中的指定id不一致导致的但是我检查过了是一样的主机名IP地址id号都是对应的,zookeeper启动正常,进程正常,还有就是HBase进程启动异常,在主节点上启动之后,只有主节点有HMaster进程另外weekend05、06上有HRegionServer进程weekend07上没有,无解了。。。按照步骤重来一遍好了,但还是没有明白哪里出了问题。
HBase表结构设计--练习篇的更多相关文章
- 七 HBase表结构设计
表结构设计之 高表 与 宽表 选择 HBase 中的表可以设计为高表(tall-narrow table) 和 宽表(flat-wide table). 高表 : ...
- hbase表结构设计
非常好的一个ppt HBase Schema design: http://www.slideshare.net/cloudera/5-h-base-schemahbasecon2012
- Hbase入门(四)——表结构设计-RowKey
Hbase的表结构设计与关系型数据库有很多不同,主要是Hbase有Rowkey和列族.timestamp这几个全新的概念,如何设计表结构就非常的重要. 创建 Hbase就是通过 表 Rowkey 列族 ...
- HBase(八): 表结构设计优化
在 HBase(六): HBase体系结构剖析(上) 介绍过,Hbase创建表时,只需指定表名和至少一个列族,基于HBase表结构的设计优化主要是基于列族级别的属性配置,如下图: 目录: BLOOMF ...
- hadoop执行hdfs文件到hbase表插入操作(xjl456852原创)
本例中需要将hdfs上的文本文件,解析后插入到hbase的表中. 本例用到的hadoop版本2.7.2 hbase版本1.2.2 hbase的表如下: create 'ns2:user', 'info ...
- hbase操作(shell 命令,如建表,清空表,增删改查)以及 hbase表存储结构和原理
两篇讲的不错文章 http://www.cnblogs.com/nexiyi/p/hbase_shell.html http://blog.csdn.net/u010967382/article/de ...
- 一套能体现 RBAC 的表结构设计
1.RBAC 概述 2.表结构设计 2.1.用户表 2.2.角色表 2.3.权限表 2.4.用户角色(关系)表 2.5.角色权限(关系)表 3.总结 1.RBAC 概述 RBAC(Role-Based ...
- Hbase:简单介绍一下Hbase表的结构
HBase 是一个NoSQL数据库,用于处理海量数据,可以支持10亿行百万列的大表,下面我就和大家分享一下数据是如何存放在HBase表中的 为了更好的理解HBase表的思路,先回顾一下关系数据库中表的 ...
- 谈Apache OFbiz 会员模块表结构设计
数据库表的结构设计可谓是ofbiz除技术框架之外,另一个非常值得学习的方向.这篇文章我们来谈谈ofbiz对电子商务会员表的设计. PARTY ofbiz对人.团体进行了抽象,称之为party,翻译为中 ...
随机推荐
- asp.net连接Access数据库实现登陆功能
这里话就不多说了,直接演示代码. 连接access数据库首先需要配置web.config <appSettings> <add key="AccessConnString& ...
- android支付
这里不讲具体的某个平台的支付使用,在工作中,公司使用到了ping++支付,使用它的好处是可以不用关心某个平台的支付了,例如:微信支付.支付宝支付等,太多的平台有个整合,是一个很好的事情,当然这也减轻了 ...
- 几个 PHP 的"魔术常量"
__LINE__ 文件中的当前行号. __FILE__ 文件的完整路径和文件名.如果用在被包含文件中,则返回被包含的文件名.自 PHP 4.0.2 起,__FILE__ 总是包含一个绝对路径(如果是符 ...
- POJ3126 Prime Path —— BFS + 素数表
题目链接:http://poj.org/problem?id=3126 Prime Path Time Limit: 1000MS Memory Limit: 65536K Total Submi ...
- svn服务器搭建与迁移
2016-11-21更新: 今天被svn的钩子搞了半天,网上找解决方法都无效,下午被我试出来了,特此记录. 在svn的钩子中可以使用update来更新配置文件,比如ansible的,puppet的,具 ...
- DataContractAttribute.IsReference
IsReference property in data contract It determines how objects are serialized, by default, IsRefere ...
- HashSe、LinkedHashSet、TreeSet(java基础知识十七)
1.HashSet存储字符串并遍历 * 特点:无序.无索引.无重复 HashSet存储字符串并遍历 HashSet<String> hs = new HashSet<>(); ...
- PHP加密方式。 base!base!base!
PHP中的加密方式有如下几种 1. MD5加密 string md5 ( string $str [, bool $raw_output = false ] ) 参数 str -- 原始字符串. ...
- UUIDUtils
package com.cc.hkjc.util; import java.util.UUID; /** * 字符串工具类 * * @author:匿名 * */public class UUID ...
- classname.this 和 this的使用场景
今天在写代码时,发现在写了一个内部类,而在内部类中需要调用外部类的实例方法,直接使用this调用发现调用的不是外部类而是内部类,于是查找资料原来需要使用外部类的classname.this这样的调用, ...