一、熟悉概念
1、行键:rowkey,行健没有数据类型,总是视为字节数组 byte[].
2、 列族:column family:行里的数据按照列族分组,列族也影响到 hbase 数据的物理存放。因此,它们必须事前定义并且不轻易修改。表中每行拥有相同列族,尽管行不需要在每个列族里存储数据。列族名字是字符串,由可以在文件系统路径里使用的字符组成。
3、列限定符(column qualifier):列族里的数据通过列限定符或列来定位。列限定符不必事前定义。列限定符不必在不同行之间保持一致,就像行健一样,列限定符没有数据类型,总是视为字节数组 byte[].
4、单元(cell)-------行健,列族和列限定符一起确定一个单元。存储在单元里的数据称为单元值(value),值也没有数据类型,总是视为字节数组 byte[].
5、时间版本(version)--------单元值有时间版本,时间版本用时间戳标识,是一个 long。没有指定时间版本时,当前时间戳作为操作的基本。hbase 保留单元值时间版本的数量基于列族进行配置。
6、hbase 在表里存储数据使用的是四维坐标系统:依次是:行健,列族,列限定符和时间版本。 hbase 按照时间戳降序排列各时间版本,其他映射建按照升序排序。
7、hbase 把数据存放在一个提供单一命名空间的分布式文件系统上。一张表由多个小一点的 region 组成,托管region 的服务器叫做 regionserver.单个 region 大小由配置参数 hbase.hregion.max.filesize 决定,当一个 region大小变得大于该值时,会切分成 2 个 region.
注意:定义表的时候只需要指定 column family 的名字,列名在 put 的时候动态指定。
二、 构建HBASE本地运行环境
1、启动HBASE

Hbase表的列限定符 hbase的列限定符概念_限定符

2、打开shell命令行模式(用户可以通过输入shell命令操作HBASE数据库

hbase shell

Hbase表的列限定符 hbase的列限定符概念_限定符_02

3、退出HBase数据库表操作

exit

3、停止HBASE运行

三、HBASE数据的物理存储(以下均在shell命令行中执行)
1、查看服务器状态

status

Hbase表的列限定符 hbase的列限定符概念_限定符_03


2、获取帮助

help ‘status’

Hbase表的列限定符 hbase的列限定符概念_限定符_04


3、查看版本信息

version

Hbase表的列限定符 hbase的列限定符概念_数据_05


4、建立一个有 3 个 column family 的表(HBASE 中的表是按 column family 来存储的)

create 't1', {NAME => 'f1', VERSIONS => 1}, {NAME => 'f2', VERSIONS => 1}, {NAME => 'f3', VERSIONS => 1}

Hbase表的列限定符 hbase的列限定符概念_限定符_06


创建了一个名为“t1”的表,定义表的时候只需要指定 column family 的名字,列名在 put 的时候动态指定。

5、向表“t1”中插入没有指定column的名字

put ‘t1’, ‘r1’, ‘f1’, ‘v1’
put ‘t1’, ‘r2’, ‘f2’, ‘v2’

Hbase表的列限定符 hbase的列限定符概念_限定符_07


6、插入指定 column 的名字

put ‘t1’, ‘r4’, ‘f1:c1’, ‘v1’
 put ‘t1’, ‘r5’, ‘f2:c2’, ‘v2’

Hbase表的列限定符 hbase的列限定符概念_删除表_08


7、扫描表“t1”

scan ‘t1’

Hbase表的列限定符 hbase的列限定符概念_hbase_09


四、时间戳

hbase shell 中 timestamp 转为可读格式

import java.util.Date
 Date.new(1601956364800).toString()

Hbase表的列限定符 hbase的列限定符概念_删除表_10


五、基本表操作

1、查看所有表

list

Hbase表的列限定符 hbase的列限定符概念_Hbase表的列限定符_11


2、创建表:create ‘表名称’, ‘列族名称 1’,‘列族名称 2’,‘列名称 N’

create ‘s’,‘pc’,‘ph’

3、查看表格式:describe(desc)

(可以看到这个表的所有默认参数)

describe ‘s’
 或
 desc ‘sr’

Hbase表的列限定符 hbase的列限定符概念_Hbase表的列限定符_12


4、添加数据:

语法:

Hbase表的列限定符 hbase的列限定符概念_删除表_13


给 s 表的添加一行记录:rowkey 是 li_2020101021723_51001_1,family name:pc,column name:v,value:o,timestamp:系统默认

put ‘s’,‘li_2020101021723_51001_1’,‘pc:v’,‘1001’

注意:一次只能 put 一个 column

5、查询数据

(1)查询某行记录

Hbase表的列限定符 hbase的列限定符概念_数据_14

get ‘s’,‘li_2020101021723_51001_1’,‘pc:v’
 或
 get ‘s’,‘li_20201010217235_51001_1’,{COLUMN=>‘pc:v’,VERSIONS=>2}

Hbase表的列限定符 hbase的列限定符概念_数据_15


(2)扫描表

Hbase表的列限定符 hbase的列限定符概念_Hbase表的列限定符_16

scan ‘t1’,{LIMIT=>3} //扫描表 t1 的前 3 条数据

Hbase表的列限定符 hbase的列限定符概念_删除表_17

(3)、查询表中的数据行数

Hbase表的列限定符 hbase的列限定符概念_限定符_18


INTERVAL 设置多少行显示一次及对应的 rowkey,默认 1000;CACHE 每次去取的缓存区大小,默认是 10,调整该参数可提高查询速度

count ‘s’, {INTERVAL => 1, CACHE => 500} //查询表’s’中的行数,每 100 条显示一次,缓存区为 500

Hbase表的列限定符 hbase的列限定符概念_Hbase表的列限定符_19


6、修改表结构:修改表结构以前必须先 disable,再修改

Hbase表的列限定符 hbase的列限定符概念_Hbase表的列限定符_20

//修改表 s 的 pc 的 VERSIONS 为 3
 disable ‘s’
 alter ‘s’,{NAME=>‘pc’,VERSIONS=>3}

Hbase表的列限定符 hbase的列限定符概念_限定符_21


7、删除表数据和表

(1)删除行中的某个列值

Hbase表的列限定符 hbase的列限定符概念_Hbase表的列限定符_22

delete 's,‘li_2020101021723_51001_1’,‘pc:v’ //删除表 s中的 pc:v 的数据

注:将删除该行 pc:v 列当前版本的数据,

(2)删除所有单元格数据

Hbase表的列限定符 hbase的列限定符概念_数据_23

// 删除表 s,li_2020101021723_51001_1 的数据
 deleteall ‘s’,‘li_2020101021723_51001_1’
 或
 deleteall ‘s’,‘li_2020101021723_51001_1’,‘pc:v’

(3)删除表中的所有数据
语法: truncate table名
其具体过程是:disable table -> drop table

truncate ‘s’ //删除表 s的所有数据

Hbase表的列限定符 hbase的列限定符概念_限定符_24

(4)删除表
分两步:首先 disable,然后 drop

//删除表 t1
 disable ‘t1’
 drop 't1

Hbase表的列限定符 hbase的列限定符概念_hbase_25