hbase数据模型与简单操作

本文深入解析了HBase数据库的结构与特性,包括rowkey、timestamp、ColumnFamily等核心概念,并提供了创建表、插入数据、查看数据、删除数据、删除表及统计行数的基本操作方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

摘自:http://www.tuicool.com/articles/EfEjief

数据模型

1. Hbase数据库采用了和Bigtable非常类似的数据类型,表格是稀疏的;

1. row key 行键,table的主键

2. timestamp 时间戳,数据操作时对应的时间戳,可以看成数据的version number

3. Column Family 列簇,每个family可以由任意多个column组成,列名是<族名>:<标签>形式;一个表格的族名时固定的,除非使用管理员权限来改变表格的族名; 不过可以在任何时候添加新的标签;

eg:course对于表来说是一个有两个列的列族(该列族由两个列组成math和art);

rowkey

name

TimeStamp

course

math

art

wish

wish

t1

t2

t3

97

93

97

98

76

99

rain

rain

t4

100

90

     4.两张特殊的表  -ROOT- 和 .META.

作用如下:(即-ROOT-记录.META.的region信息,.META.记录用户表的region信息)

关系如下:

基本操作

   (注意操作后不要加分号,习惯了sql,总是在后面加分号,然后发现执行语句后都一直没有反应,去掉分号后成功)

(表名和列名都需要加引号,不区分单双引号)

Hbase shell,是Hbase的命令行工具,命令行中执行hbase shell即可进入hbase shell命令行

1) list  查看hbase中所有表

2) 创建表:

create '表名','列簇1','列簇2'....

create 'student', 'name','grade','course'

在管理界面中查看student

3)describe 查看表结构

describe '表名'

eg: describe 'student'

hbase(main):003:0> describe "student"
DESCRIPTION                                          ENABLED
 'student', {NAME => 'course', DATA_BLOCK_ENCODING = true
 > 'NONE', BLOOMFILTER => 'NONE', REPLICATION_SCOPE
 => '0', VERSIONS => '3', COMPRESSION => 'NONE', MIN
 _VERSIONS => '0', TTL => '2147483647', KEEP_DELETED
 _CELLS => 'false', BLOCKSIZE => '65536', IN_MEMORY
 => 'false', ENCODE_ON_DISK => 'true', BLOCKCACHE =>
  'true'}, {NAME => 'grade', DATA_BLOCK_ENCODING =>
 'NONE', BLOOMFILTER => 'NONE', REPLICATION_SCOPE =>
  '0', VERSIONS => '3', COMPRESSION => 'NONE', MIN_V
 ERSIONS => '0', TTL => '2147483647', KEEP_DELETED_C
 ELLS => 'false', BLOCKSIZE => '65536', IN_MEMORY =>
  'false', ENCODE_ON_DISK => 'true', BLOCKCACHE => '
 true'}, {NAME => 'name', DATA_BLOCK_ENCODING => 'NO
 NE', BLOOMFILTER => 'NONE', REPLICATION_SCOPE => '0
 ', VERSIONS => '3', COMPRESSION => 'NONE', MIN_VERS
 IONS => '0', TTL => '2147483647', KEEP_DELETED_CELL
 S => 'false', BLOCKSIZE => '65536', IN_MEMORY => 'f
 alse', ENCODE_ON_DISK => 'true', BLOCKCACHE => 'tru
 e'}

4)插入数据和查看数据

put '表名','行键名','列名','value','列名2','value2','family:列名1','value3'.......

put 'student','wish','name:','wish'

查询数据:

get '表名','行名'

get 'student','wish'

插入更多数据

hbase(main):004:0> put 'student','wish','course:English','100'


hbase(main):005:0> put 'student','wish','course:Chinese','60'


hbase(main):006:0> put 'student','rain','course:Chinese','100'


hbase(main):007:0> put 'student','rain','course:English','200'

查看表中数据: scan 'student'

其他get例子:

get 'student','wish','course'

get 'student','wish',['course']

get 'student','wish',['course','name']

5)删除数据

delete 'student','wish','course:Math'

6)删除表

需停止表的可用性,再删除表

disable 'student'drop 'student'

7) 统计行数

count 'student'

 

  1:Row Key: 行键,Table的主键,Table中的记录默认按照Row Key升序排序
  2:Timestamp:时间戳,每次数据操作对应的时间戳,可以看作是数据的version number
  3:Column Family:列簇,Table在水平方向有一个或者多个Column Family组成,一个Column Family中可以由任意多个Column组成,即Column Family支持动态扩展,无需预先定义Column的数量以及类型,所有  Column均以二进制格式存储,用户需要自行进行类型转换。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值