hbase介绍

HBase是一个分布式、版本化、基于列族的NoSQL数据库,其数据以Bytes形式存储,无数据类型概念。通过RowKey、Column(=Family+Label)和Version三元组定位单元。RowKey是任意字符串,列簇预先定义,时间戳用于版本控制。HBase提供多种Shell操作,包括表的创建、描述、删除,数据的插入、查询、更新和删除等。

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

主要参考:

1.hbase介绍1
2.hbase介绍2

简单总结

主要需要明白hbase存储的模式,
1.存储的数据没有类型的概念,都是以Bytes存储,这就是为什么java api里边需要取出来的时候:Bytes.toString,写入的时候Bytes.toBytes()

rowkey

2.通过{row key,column(=< family> + < label>),version} 唯一确定的单元,
1)通过单个 Row Key 访问。
2)通过 Row Key 的 range 全表扫描。
3)Row Key 可以使任意字符串(最大长度是64KB,实际应用中长度一般为 10 ~ 100bytes),在HBase 内部,Row Key 保存为字节数组。

列簇

HBase 表中的每个列都归属于某个列族。列族是表的 Schema 的一部分(而列不是),必须在使用表之前定义。列名都以列族作为前缀,例如 courses:history、courses:math 都属于 courses 这个列族。这个history,math就是每个cell里边的key,

时间戳

HBase 中通过 Row 和 Columns 确定的一个存储单元称为 Cell。每个 Cell 都保存着同一份数据的多个版本。 版本通过时间戳来索引,时间戳的类型是 64 位整型。时间戳可以由HBase(在数据写入时自动)赋值,
此时时间戳是精确到毫秒的当前系统时间。时间戳也 可以由客户显示赋值。如果应用程序要避免数据版本冲突,就必须自己生成具有唯一性的时间戳。每个 Cell 中,不同版本的数据按照时间倒序排序,即最新的数据排在最前面。

hbase常用命令行

下边分组举例 Shell 的各种操作。

general操作
查询 HBase 服务器状态 status。

查询hbase版本 version

ddl操作
1、 创建一个表

create ‘table1’, ‘tab1_id’, ‘tab1_add’, ‘tab1_info’

2、 列出所有的表

3、 获得表的描述

describe “table1”

4、 删除一个列族 disable alter enable 注意删除前,需要先把表disable

disable ‘table1’

alter ‘table1’, {NAME=>’tab1_add’, METHOD=>’delete’}

enable ‘table1’

5、 查看表是否存在
exists ‘table2’

6、 判断表是否为‘enable’

is_enabled ‘table1’

7、 删除一个表

disable ‘table1’

drop ‘table1’

dml操作
1、 插入几条记录

put ‘member’, ‘scutshuxue’, ‘info:age’, ‘24’

put ‘member’, ‘scutshuxue’, ‘info:birthday’, ‘1987-06-17’

put ‘member’, ‘scutshuxue’, ‘info:company’, ‘alibaba’

put ‘member’, ‘scutshuxue’, ‘address:contry’, ‘china’

put ‘member’, ‘scutshuxue’, ‘address:province’, ‘zhejiang’

put ‘member’, ‘scutshuxue’, ‘address:city’, ‘hangzhou’

put命令比较简单,只有这一种用法:
hbase> put ‘t1′, ‘r1′, ‘c1′, ‘value’, ts1

t1指表名,r1指行键名,c1指列名,value指单元格值。ts1指时间戳,一般都省略掉了。

2、 全表扫描 scan

3、 获得数据 get

  1. 获得一行的所有数据

  2. 获得某行,某列族的所有数据

  3. 获得某行,某列族,某列的所有数据

4、 更新一条记录 put(把scutshuxue年龄改为99)

put ‘member’, ‘scutshuxue’, ‘info:age’, 99

5、 删除 delete、 deleteall

  1. 删除行’scutshuxue’, 列族为‘info’ 中age的值

delete ‘member’, ‘scutshuxue’, ‘info:age’

  1. 删除整行

deleteall ‘member’, ‘scutshuxue’

6、 查询表中有多少行

count ‘member’

7、 给‘xiaoming’这个id增加’info:age’字段,并使用counter实现递增

incr ‘member’, ‘xiaoming’, ‘info:age’

8、 将整个表清空

truncate ‘member’

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值