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

效果图如下图所示

相关推荐
今天长肉了吗几秒前
风控指标平台实战:大数据量下如何设计分批处理
开发语言·数据库·python
2301_782040456 分钟前
JavaScript中丢失的this:回调函数中指向改变的对策
jvm·数据库·python
2301_818008448 分钟前
MySQL从库出现数据同步异常中断_重新获取binlog坐标同步
jvm·数据库·python
四维迁跃9 分钟前
MySQL如何优雅处理数据库连接池耗尽_HikariCP与连接数调优
jvm·数据库·python
X566122 分钟前
Go语言如何做Helm Chart_Go语言Helm打包部署教程【收藏】
jvm·数据库·python
szccyw025 分钟前
如何阻止 HTML 页面在 JavaScript 执行完成前渲染
jvm·数据库·python
1.14(java)26 分钟前
Spring事务和事务传播机制
java·数据库·spring
forEverPlume26 分钟前
Go语言怎么做链路追踪_Go语言分布式链路追踪教程【精选】
jvm·数据库·python
abc123456sdggfd29 分钟前
golang如何操作Elasticsearch搜索引擎_golang操作Elasticsearch方法
jvm·数据库·python
计算机毕业编程指导师30 分钟前
【计算机毕设选题推荐】基于Hadoop+Spark的诺贝尔奖可视化分析系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习 数据挖掘
大数据·hadoop·python·计算机·spark·毕业设计·诺贝尔奖