HBase 表如何按照某表字段排序后顺序存储的方法?

首先需要明白HBase表的排序规则:

(1)rowkey排序(字典排序)------升序

(2)Column排序(字典排序)------升序

(3)时间戳排序------降序

rowkey 字典序排序可点击下方链接了解。

[HBase] - 理解 HBase Rowkey 字典排序https://www.jianshu.com/p/d4609b5bb9f3

如果想按照某列字段来排序,则需要再设计该表的rowkey上做文章,既满足字典排序,又能按照想要的字段排序来存储数据。

下面给出我的一个设计思路,仅供参考

业务需求:按照 发布日期 listdate 降序排列数据

伪代码:

sql 复制代码
---- 在设计rowkey时做文章

---对基础表数据进行排序(row_number()函数)
--第一步
select
a.*,
ROW_NUMBER() over( order by listdate asc) as rn
from
XXX.t_XXX a

--第二步
- 综合考虑字典排序的规则,及预估表数据量,设定一个较大的数值(比如99999999)作为rowkey设计子字段

insert into XXX.XXXXX
select
concat(99999999 - a.rn, '_', a.XXXX_code) as rowkey,
a.*
from 
(
select
a.*,
ROW_NUMBER() over( order by listdate asc) as rn
from
XXX.t_XXX a
) a

最后的实现效果是,存储在HBase的数据,是按照listdate 降序顺次存储,方便后续开发api接口,返回数据。

效果图如下图所示

相关推荐
Leon-Ning Liu1 分钟前
Oracle UNDO表空间文件误删除故障恢复
数据库·oracle
2301_7765087234 分钟前
用Python生成艺术:分形与算法绘图
jvm·数据库·python
cxr82844 分钟前
PaperclipAI 组织关系与智能体协作指南
数据库·人工智能·架构·ai智能体·openclaw
跨境卫士-小汪1 小时前
高风险订单识别不足如何设置拦截与二次核验
大数据·人工智能·产品运营·跨境电商·营销策略
@insist1231 小时前
数据库系统工程师-Armstrong 公理系统:函数依赖推理与候选码求解核心方法论(重点)
数据库·软考·软件设计师·软件水平考试
贾斯汀玛尔斯2 小时前
kinbana中无法在discover中显示在ES中创建的索引--解决方案
大数据·elasticsearch·搜索引擎
山峰哥2 小时前
查询优化案例:从慢查询到闪电般的查询速度
数据库·sql·性能优化·编辑器·深度优先
杨云龙UP2 小时前
Oracle ASM磁盘组空间分配与冗余理解
linux·运维·数据库·sql·oracle
微学AI3 小时前
一款数据库SQL防火墙:可以拦截99.99%,可以阻止恶意SQL
数据库·sql
2401_884563243 小时前
Python Lambda(匿名函数):简洁之道
jvm·数据库·python