一种基于Flink&Doris构建实时数仓系统的方法与流程

文档序号:31476175发布日期:2022-09-10 00:30阅读:321来源:国知局
一种基于flink&doris构建实时数仓系统的方法
技术领域
:1.本发明涉及数据库
技术领域
:,更具体地说,涉及一种基于flink&doris构建实时数仓系统的方法。
背景技术
::2.随着大数据时代的到来,当前各大公司的业务需求和内部决策对于数据实时性的要求越来越迫切,需要实时数据分析的能力来赋能。传统离线数仓的数据时效性是t+1,调度频率以天为单位,无法支撑实时场景的数据需求。即使能将调度频率设置成小时,也只能解决部分时效性要求不高的场景,对于实效性要求很高的场景还是无法支撑;公司目前部分实时olap分析需求都依赖于oracle/mysql集群的计算性能,抢占了数据库的oltp资源,该模式下的数据库性能已出现告警,因此实时数据服务问题必须得到有效解决。3.现阶段实时场景的需求是通过实时计算框架sparkstreaming、flink进行代码开发提供实时数据服务,当前模式对开发人员的技术要求较高,且开发周期冗长,对业务的需求响应较慢,效率低下。且实时数据建设没有规范,数据可用性较差,无法形成数仓体系,造成资源大量浪费。因此研发更快速、更简便的实时场景解决方案,实现olap和oltp场景分离,提升实时业务需求的响应速度和效率是数据仓库当前急需解决的问题。技术实现要素:4.本发明要解决的技术问题在于,针对上述技术方案存在的不足,提供一种解决实时场景开发周期冗长,数据可用性低下,实现olap和oltp场景分离的基于flink&doris构建实时数仓系统的方法。5.本发明提供一种基于flink&doris构建实时数仓系统的方法,所述方法包括以下步骤:s1,抽取不同业务数据库获取日志文件的变更数据,并基于flinkcdc组件将日志文件的增量变化实时同步至kafka消息队列,并根据flinkcdc组件同步增量变化的业务场景,创建所需的kafkatopic,并将业务数据库中原始的操作日志报文同步至kafkatopic中;s2,解析kafkatopic中的业务数据库的操作日志报文得到数据库源表,并将所述业务数据库的操作日志报文发送至实时数仓ods层,便于通过flinksql将数据库源表映射成ods层流式源表;s3,通过flinksql对所述实时数仓ods层中的kafka数据进行处理,将实时数仓建设为dwd明细层、dim公共维度层和dm汇总层。6.在本发明所述的基于flink&doris构建实时数仓系统的方法中,在所述步骤s1中,根据不同业务数据库选取不同的flinkcdc组件,其中所述flinkcdc组件支持的业务数据库包括mysql、oracle、sqlserver、mongodb、oceanbase、postgres与tidb。7.在本发明所述的基于flink&doris构建实时数仓系统的方法中,所述原始的操作日志报文包括所述数据库源表的ddl语句或dml语句。8.在本发明所述的基于flink&doris构建实时数仓系统的方法中,所述步骤s2还包括以下步骤:s21,根据实时数仓层级建设并按照数据库源表创建ods层所需的kafkatopic。9.在本发明所述的基于flink&doris构建实时数仓系统的方法中,所述步骤s2还包括以下步骤:s22,编写解析所述数据库的操作日志报文的flink流式程序,并将操作日志报文转换成json数据,将数据库源表中的update更新和delete删除操作分别转换为insert插入,并把解析出来的json数据发送到ods层的kafkatopic中。10.在本发明所述的基于flink&doris构建实时数仓系统的方法中,所述步骤s3中对所述实时数仓ods层中的kafka数据进行处理的方式包括数据转化、维度关联与指标统计。11.在本发明所述的基于flink&doris构建实时数仓系统的方法中,在所述步骤s3中,所述dwd明细层的数据来源于ods层的kafkatopic,通过大数据架构提供的flinksql完成数据转化、维度关联;基于每个具体业务数据库的业务过程特点构建最细粒度的dwd明细层事实表,其中dwd明细层的数据存储在kafkatopic消息队列中,同时也将dwd明细层的数据实时写入doris数据库中,供明细数据查询和作为简单汇总数据的加工数据源。12.在本发明所述的基于flink&doris构建实时数仓系统的方法中,在所述步骤s3中,所述dim层主要用于存放各个业务主题的维度数据。13.在本发明所述的基于flink&doris构建实时数仓系统的方法中,在所述步骤s3中,通过flinksql对dwd层的kafkatopic数据进行多维的主题汇总,其中dm层的数据存放于doris,所述dwd层可直接对外提供实时数据服务,同时也可通过接口对外提供数据查询。14.根据本发明的另一方面,还提供一种计算机设备,所述计算机设备包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如本发明任一实施例所述的基于flink&doris构建实时数仓系统的方法。15.本发明的基于flink&doris构建实时数仓系统的方法能快速高效的进行实时需求开发,将数据库的olap业务与oltp分离,消除olap对oltp性能影响,极大减轻了数据库的负载,提升了实时数据可用性和业务需求的响应速度。附图说明16.图1是本发明一种基于flink&doris构建实时数仓系统的方法的流程示意图。具体实施方式17.为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。18.需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。19.如图1所示,提供一种基于flink&doris构建实时数仓系统的方法,该方法包括以下步骤:s1,抽取不同业务数据库获取日志文件的变更数据,并基于flinkcdc组件将日志文件的增量变化实时同步至kafka消息队列,并根据flinkcdc组件同步增量变化的业务场景,创建所需的kafkatopic,并将业务数据库中原始的操作日志报文同步至kafkatopic中;flinkcdc组件的工作原理是通过抽取各个业务数据库获取日志文件的变更数据,能够捕获到数据库的所有数据变化,无需像查询同步技术(sqoop)进行全表扫描,不增加业务数据库的负载,而且flinkcdc组件是实时同步解析业务数据库的日志文件,数据延迟基本上是秒级。20.s2,解析kafkatopic中的业务数据库的操作日志报文得到数据库源表,并将业务数据库的操作日志报文发送至实时数仓ods层,便于通过flinksql将数据库源表映射成ods层流式源表;s3,通过flinksql对实时数仓ods层中的kafka数据进行处理,将实时数仓建设为dwd明细层、dim公共维度层和dm汇总层。21.在一实施例中,在步骤s1中,根据不同业务数据库选取不同的flinkcdc组件,其中flinkcdc组件支持的业务数据库包括mysql、oracle、sqlserver、mongodb、oceanbase、postgres与tidb等。22.具体的,原始的操作日志报文包括数据库源表的ddl语句或dml语句。23.在一实施例中,步骤s2还包括以下步骤:s21,根据实时数仓层级建设并按照数据库源表创建ods层所需的kafkatopic。24.在一实施例中,步骤s2还包括以下步骤:s22,编写解析数据库的操作日志报文的flink流式程序,并将操作日志报文转换成json数据,将数据库源表中的update更新和delete删除操作分别转换为insert插入,并把解析出来的json数据发送到ods层的kafkatopic中,目的是为数据的后续层级迁移提供流式环境。25.在一实施例中,步骤s3中对实时数仓ods层中的kafka数据进行处理的方式包括数据转化、维度关联与指标统计等。26.在一实施例中,在步骤s3中,dwd明细层的数据来源于ods层的kafkatopic,通过大数据架构提供的flinksql完成数据转化、维度关联等;基于每个具体业务数据的业务过程特点构建最细粒度的dwd明细层事实表,其中dwd明细层的数据存储在kafkatopic消息队列中,同时也将dwd明细层的数据实时写入doris数据库中,供明细数据查询和作为简单汇总数据的加工数据源。27.在一实施例中,在步骤s3中,dim层主要用于存放各个业务数据库中业务主题的维度数据,且dim公共维度层的存储引擎必须要支持flinksql的访问。一般对于维表数据比较少的情况可以使用mysql;对于单条数据大小比较小,查询qps比较高的情况,可以使用redis存储,降低flink集群内存资源占用;对于数据量比较大,维表数据变化不是特别敏感的场景,可以使用hbase存储。28.在一实施例中,在步骤s3中,通过flinksql对dwd层的kafkatopic数据进行多维的主题汇总,其中dm层的数据存放于doris,dwd层可直接对外提供实时数据服务,同时也可通过接口对外提供数据查询。因为实时数仓本身是面向主题的,可能每个主题会关心的维度都不一样,所以需要在不同的主题下,按照这个主题关心的维度对数据进行汇总。29.本实施例的另一方面,还提供一种计算机设备,计算机设备包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当一个或多个程序被一个或多个处理器执行,使得一个或多个处理器实现实现如本发明任意实施例所提供的基于flink&doris构建实时数仓系统的方法。30.选用oracle业务数据库处理为例,其中其他业务数据库处理的过程也和oracle业务数据库处理过程相同。31.具体的过程如下:在oracle业务数据库的订单表(t_order)中插入一条数据:ꢀꢀinsertintoꢀꢀtablemsp.t_order(id,vin,created_date)ꢀꢀvalue('2021112903','lgbc1aexxxxxx','2022-05-01');flinkcdc会实时捕获到这条数据的插入操作日志报文:{"before":{},"after":{"id":"2021112903","vin":"lgbc1aexxxxxx","created_date":"2022-05-01"ꢀꢀꢀꢀ},"source":{"name":"msp","table":"t_order","txid":"tx-3"ꢀꢀꢀꢀ},"op":"i","ts_ms":1437480416795}(2)flinkcdc将这条数据发送到kafka主题topic_a(3)通过flink程序去kafka主题topic_aꢀꢀꢀꢀ将这条日志报文解析成原本的数据库数据{"id":"2021112903","vin":"lgbc1aexxxxxx","created_date":"2022-05-01","del":"0"ꢀꢀꢀꢀ}(4)将解析的结果数据发送到实时数仓ods层即kafka主题topic_ods_order。32.(5)通过flinksql进行数据拉宽处理。topic_ods_order与topic_ods_user进行join匹配,数据增加了一个用户电话信息,得到结果数据:{"id":"2021112903","vin":"lgbc1aexxxxxx","user_phone":"188xxxxxxx","created_date":"2022-05-01","del":"0"ꢀꢀꢀꢀ}将结果数据发送至实时数仓dwd层即kafka主题topic_dwd_order。33.(6)使用flinksql对实时数仓dwd层的数据进行统计用户当日的用户订单数:{"id":"2021112903","vin":"lgbc1aexxxxxx","user_phone":"188xxxxxxx","order_count":"1","created_date":"2022-05-01","del":"0"ꢀꢀꢀꢀ}将统计结果存入到实时数仓dm层doris数据库中,供可视化工具查询。34.本发明实施例提供的一种基于flink&doris构建实时数仓系统的方法的有益效果至少在于:1、基于flinkcdc日志同步技术,可以实时捕获到数据库的增量变化且不会增加数据库负载,改变了传统数仓t+1离线抽取数据的模式,为实时olap分析提供了数据基础。35.2、数据服务端引入doris存储引擎,可以支持高并发查询,具有良好的实时olap分析性能,扩容方便,支持mysql协议等优点。且doris的唯一主键模式克服了传统数仓关于历史数据变化而导致统计不准确的痛点,可适用于复杂的业务场景,满足数据源的增删改操作。36.3、本方案使用flinksql进行实时业务场景开发,可以简化实时项目的开发流程,缩短开发周期,并且降低开发难度,能快速的响应业务需求。37.需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。38.通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。39.因此,以上所述,仅为本发明较佳的具体实施方式,本发明的保护范围并不局限于此,任何熟悉本
技术领域
:的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内,本发明的保护范围应该以权利要求的保护范围为准。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1