一种基于数据湖的拉链表处理方法及设备技术

技术编号:34268060 阅读:38 留言:0更新日期:2022-07-24 15:23
本申请的目的是提供一种基于数据湖的拉链表处理方法及设备,本申请通过获取数据源的历史快照数据,将所述历史快照数据写入数据湖,得到初始化后的历史拉链表,并记录所述历史拉链表的起始时间和结束时间;对所述数据源进行数据变更的监测,实时获取所述数据源中的变更数据;对所述变更数据进行数据分析,确定所述变更数据的变更模式;基于所述变更模式和所述历史拉链表,将所述变更数据更新写入至所述数据湖,实现了通过数据湖技术,对拉链表中的变更数据进行实时记录,从而解决数仓人员在处理拉链表过程中操作过于繁琐以及传统历史拉链表中统计的数据颗粒度不够细的问题。拉链表中统计的数据颗粒度不够细的问题。拉链表中统计的数据颗粒度不够细的问题。

A zipper table processing method and equipment based on data Lake

【技术实现步骤摘要】
一种基于数据湖的拉链表处理方法及设备


[0001]本申请涉及计算机领域,尤其涉及一种基于数据湖的拉链表处理方法及设备。

技术介绍

[0002]目前,随着大数据及人工智能技术逐渐发展成熟,数据湖已广泛应用于各大互联网企业的实时及离线业务分析场景中来。现有数据湖技术主要基于hudi,iceberg,delta lake等开源项目实现。通过监听数据库的binglog日志,将业务数据库中的数据同步到数据湖中,之后在数仓中进行后续大数据量的业务处理。而现有的拉链表的数据模型,主要是基于天层级上的,以离线T+1形式将变动的数据进行新增,同时将变动的前一条数据的有效期进行变更。但是,如果想要记录更细粒度的数据变化(分钟级),这种常规的拉链表则无法有效的统计数据的变更情况。
[0003]现有的拉链表设计中,基于hudi数据湖技术,能够实时将数据的变更落地到数仓目前这一块还是比较空缺的。现有的拉链表设计中,拉链表数据模型是利用先从原始数据中获取一份快照数据存储到历史拉链表中,并将当前时间设定为启始时间,将一个固定的永久时间(例如9999

12

31)设定为结束时间。之后将当天变动的数据集放入到增量数据表中,将历史的数据拉链表跟当天变动的增量数据集进行左连接,关联上的数据说明已经出现变动,将这部分数据的截止时间进行更新,作为数据集,这部分就相当于历史数据了。之后再将增量数据表中的数据添加启始时间和结束时间,即该部分数据就也就是当天变动的数据。最后将上述的两部分数据进行合并生成新的全量历史拉链表覆盖原先的历史拉链表。这种方案虽然可以解决基于天层级方面的数仓侧拉链表问题,但是操作起来较为繁杂,且无法做到更细颗粒度层级的拉链表统计,同时也不适用于对实时性要求较高场景的应用等。

技术实现思路

[0004]本申请的一个目的是提供一种基于数据湖的拉链表处理方法及设备,以实现通过数据湖技术,对拉链表中的变更数据进行实时记录,从而解决数仓人员在处理拉链表过程中操作过于繁琐以及传统历史拉链表中统计的数据颗粒度不够细的问题。
[0005]根据本申请的一个方面,提供了一种基于数据湖的拉链表处理方法,其中,所述方法包括:
[0006]获取数据源的历史快照数据,将所述历史快照数据写入数据湖,得到初始化后的历史拉链表,并记录所述历史拉链表的起始时间和结束时间;
[0007]对所述数据源进行数据变更的监测,实时获取所述数据源中的变更数据;
[0008]对所述变更数据进行数据分析,确定所述变更数据的变更模式;
[0009]基于所述变更模式和所述历史拉链表,将所述变更数据更新写入至所述数据湖。
[0010]进一步地,上述一种基于数据湖的拉链表处理方法中,其中,所述获取数据源的历史快照数据,将所述历史快照数据写入数据湖,得到初始化后的历史拉链表,包括:
[0011]连接所述数据源,基于所述数据源中的数据表的自增索引,通过flink批处理方式获取所述数据表中的数据;
[0012]基于数据湖的数据批量插入命令,将所述数据表中的数据写入数据湖,得到所述历史拉链表。
[0013]进一步地,上述一种基于数据湖的拉链表处理方法中,其中,所述对所述数据源进行数据变更的监测,实时获取所述数据源中的变更数据,包括:
[0014]确定所述数据源中目标业务对应的目标业务字段;
[0015]基于所述数据源的binlog日志,通过数据库增量日志解析系统对所述数据源中的所述目标业务字段对应的数据进行数据变更的监测,实时获取所述目标业务字段对应的变更数据,并将所述变更数据发送至分布式发布订阅消息系统;
[0016]通过flink流处理方式实时获取所述分布式发布订阅消息系统中的所述变更数据。
[0017]进一步地,上述一种基于数据湖的拉链表处理方法中,其中,所述基于所述变更模式和所述历史拉链表,将所述变更数据更新写入至所述数据湖,包括:
[0018]若所述变更数据的变更模式为插入模式,则对所述插入模式对应的插入数据添加一个固定时间进行标记,并基于数据湖的插入更新命令,将标记后的所述插入数据写入所述数据湖。
[0019]进一步地,上述一种基于数据湖的拉链表处理方法中,其中,所述基于所述变更模式和所述历史拉链表,将所述变更数据更新写入至所述数据湖,还包括:
[0020]若所述变更数据的所述变更模式为更新模式,则对所述更新模式对应的更新数据进行解析,得到所述更新数据的更新部分和所述更新数据的原始部分;
[0021]将所述更新数据的所述更新部分和所述原始部分进行组装,得到拉链表更新数据,并基于数据湖的插入更新命令,将所述拉链表更新数据写入所述数据湖。
[0022]根据本申请的另一方面,还提供了一种非易失性存储介质,其上存储有计算机可读指令,所述计算机可读指令可被处理器执行时,使所述处理器实现如上述一种基于数据湖的拉链表处理方法。
[0023]根据本申请的另一方面,还提供了一种基于数据湖的拉链表处理设备,其中,所述设备包括:
[0024]一个或多个处理器;
[0025]非易失性存储介质,用于存储一个或多个计算机可读指令,
[0026]当所述一个或多个计算机可读指令被所述一个或多个处理器执行,使得所述一个或多个处理器实现如上述一种基于数据湖的拉链表处理方法。
[0027]与现有技术相比,本申请通过获取数据源的历史快照数据,将所述历史快照数据写入数据湖,得到初始化后的历史拉链表,并记录所述历史拉链表的起始时间和结束时间;对所述数据源进行数据变更的监测,实时获取所述数据源中的变更数据;对所述变更数据进行数据分析,确定所述变更数据的变更模式;基于所述变更模式和所述历史拉链表,将所述变更数据更新写入至所述数据湖,实现了通过数据湖技术,对拉链表中的变更数据进行实时记录,从而解决数仓人员在处理拉链表过程中操作过于繁琐以及传统历史拉链表中统计的数据颗粒度不够细的问题。
附图说明
[0028]通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
[0029]图1示出根据本申请一个方面的一种基于数据湖的拉链表处理方法的流程示意图;
[0030]图2示出根据本申请一个方面的一种基于数据湖的拉链表处理方法的项目层级图。
[0031]附图中相同或相似的附图标记代表相同或相似的部件。
具体实施方式
[0032]下面结合附图对本申请作进一步详细描述。
[0033]在本申请一个典型的配置中,终端、服务网络的设备和可信方均包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
[0034]内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
[0035]计算机可读介质包括永久本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于数据湖的拉链表处理方法,其中,所述方法包括:获取数据源的历史快照数据,将所述历史快照数据写入数据湖,得到初始化后的历史拉链表,并记录所述历史拉链表的起始时间和结束时间;对所述数据源进行数据变更的监测,实时获取所述数据源中的变更数据;对所述变更数据进行数据分析,确定所述变更数据的变更模式;基于所述变更模式和所述历史拉链表,将所述变更数据更新写入至所述数据湖。2.根据权利要求1所述的方法,其中,所述获取数据源的历史快照数据,将所述历史快照数据写入数据湖,得到初始化后的历史拉链表,包括:连接所述数据源,基于所述数据源中的数据表的自增索引,通过flink批处理方式获取所述数据表中的数据;基于数据湖的数据批量插入命令,将所述数据表中的数据写入数据湖,得到所述历史拉链表。3.根据权利要求1所述的方法,其中,所述对所述数据源进行数据变更的监测,实时获取所述数据源中的变更数据,包括:确定所述数据源中目标业务对应的目标业务字段;基于所述数据源的binlog日志,通过数据库增量日志解析系统对所述数据源中的所述目标业务字段对应的数据进行数据变更的监测,实时获取所述目标业务字段对应的变更数据,并将所述变更数据发送至分布式发布订阅消息系统;通过flink流处理方式实时获取所述分布式发布订...

【专利技术属性】
技术研发人员:郭爱群王瑞孙欣然倪述荣王佳斐周昊
申请(专利权)人:上海聚音信息科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1