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接口,返回数据。

效果图如下图所示

相关推荐
武子康37 分钟前
大数据-98 Spark 从 DStream 到 Structured Streaming:Spark 实时计算的演进
大数据·后端·spark
阿里云大数据AI技术41 分钟前
2025云栖大会·大数据AI参会攻略请查收!
大数据·人工智能
薛定谔的算法3 小时前
phoneGPT:构建专业领域的检索增强型智能问答系统
前端·数据库·后端
代码匠心3 小时前
从零开始学Flink:数据源
java·大数据·后端·flink
Databend4 小时前
Databend 亮相 RustChinaConf 2025,分享基于 Rust 构建商业化数仓平台的探索
数据库
得物技术5 小时前
破解gh-ost变更导致MySQL表膨胀之谜|得物技术
数据库·后端·mysql
Lx3526 小时前
复杂MapReduce作业设计:多阶段处理的最佳实践
大数据·hadoop
武子康8 小时前
大数据-100 Spark DStream 转换操作全面总结:map、reduceByKey 到 transform 的实战案例
大数据·后端·spark
expect7g9 小时前
Flink KeySelector
大数据·后端·flink
Raymond运维9 小时前
MariaDB源码编译安装(二)
运维·数据库·mariadb