hbase设计rowkey例子

HBASE表的模板

rowkey

CF1

CF2

CF(N)

timestamp

Column1

Column2

Column3

Column4

 

 

 

 

 

 

 

 

说明:hbase表由rowkey+列族(CF)+ timestamp组成
A)、Rowkey 相当于主键
B)、CF1 全写是 columnFamily ,就是列族
C)、Timestamp 这个时间截相当于版本号,因为一行数据可能会更新,HBASE不会删除老的数据,每条数据加一个时间截,做为版本标记

一般设计Hbase表主要就是对rowkey跟CF(列族),设计rowkey是根据查询条件来决定,列族是根据查询结果来定的。

rowKey设计原则

1、长度越短越好
2、唯一性
3、散列原则

Rowkey是一个二进制码流,目前操作系统是都是64位系,控制在16个字节,8字节的整数倍利用操作系统的最佳特性。下面是rowkey的结构表

1字节

2字节

3字节

4字节

5字节

6字节

7字节

8字节

散列字段

时间字段

扩展字段

 

 

 

  • 散列字段 = 就是hash字段,这个字段可以根据HBASE多少节点来做随机,比如HBASE有3个节点,那么,这个节点的值可以是 1 、 2 、3,这样做的好处是,数据会分散到3个节点去存,也就是分片的依据

  • 时间字段,如果HBASE表用天分表,这个字段就可以存时分,那么就比较短,所以表最好是以天来建最好,可以减少rowkey的长度

  • 扩展字段主要就是查询输入项的字段了,比如币种,分类字段啊什么的。

所以表的rowkey主要三个部分组成

客户经理报表设计(综合业绩信息)

输入项:
统计日期、指标类别、币种、统计方式、单位。(下面是按天分表,所以时间字段只存时分秒)

rowkey

散列字段

时间字段

扩展字段

001

123012

指标类别(001)+币种(01)+统计方式(02)+单位(01)

001

123012

001010201

合并:001123012001010201

整个表结构如下

rowkey

CF

timestamp

 

 

 

分享