一种实时数仓框架的搭建方法以及实时数仓框架与流程

文档序号:29157871发布日期:2022-03-08 22:06阅读:192来源:国知局
一种实时数仓框架的搭建方法以及实时数仓框架与流程

1.本发明属于计算机技术领域,尤其涉及一种实时数仓框架的搭建方法以及实时数仓框架。


背景技术:

2.phoenix是基于hbase的大数据框架,可以很好的跟hbase融合,同时update等操作支持非常好。flink sql是flink新框架,支持基于类似sql语句格式实现数据的流式处理,但flink sql目前不支持phoenix。canal可以将mysql的数据同步到kafka,但该组件受限于数据格式的要求不能完全满足复杂的业务需求,flink sql支持canal数据格式,但同样受限于组件的数据格式,难以支持复杂的业务需求。
3.对于复杂业务,目前并没有任何一个实时数仓框架能够同时支持下面特性:1、数据update支持性非常好,能够达到毫秒级别,最好是基于hbase,或者基于目前已经在使用的phoenix;2、基于大数据,满足海量数据实时统计;3、可执行类sql语句,最好是基于flink sql;4、解决canal数据格式受限问题,满足复杂的业务需求。


技术实现要素:

4.本发明实施例提供一种实时数仓框架的搭建方法,旨在解决提供支持update操作、能够满足业务需求、可执行类sql语句的实时数仓框架的问题。
5.本发明实施例是这样实现的,将结构化查询语言语句通过页面配置进行保存,以通过第一引擎读取所述页面配置执行对应的所述sql语句;通过预设连接器,建立所述第一引擎与第二引擎之间的连接;配置解析模块,其中,所述解析模块用于实时将第一数据库中的业务消息解析为自定义格式,并将解析后的业务消息写入流处理平台中;对所述第一引擎添加格式化程序,以使所述第一引擎支持所述自定义格式;配置统一数仓查询框架,以通过所述统一数仓查询框架对所述业务消息进行实时统计。
6.更进一步地,所述配置解析模块,包括:配置消息中间件,将所述消息中间件的数据格式改写为所述自定义格式,以通过所述消息中间件将所述第一数据库中的业务消息解析为所述自定义格式后,同步到所述流处理平台中。
7.本发明实施例还提供一种实时数仓框架,通过上述的实时数仓框架的搭建方法而搭建。
8.本发明实施例还提供一种基于实时数仓框架的业务消息处理方法,应用于上述的实时数仓框架中,包括:获取第一数据库中的业务消息,并将所述业务消息解析为自定义格式;将解析后所述自定义格式的业务消息发送至流处理平台中;第一引擎通过执行结构化查询语言语句查询所述流处理平台中的业务消息,对所述业务消息进行流式处理后写入所述流处理平台中;通过第二引擎将所述流处理平台中的业务消息采集到统一数仓查询框架中进行实时统计。
9.更进一步地,所述获取第一数据库中的业务消息,包括:通过消息中间件将数据库
中的业务消息解析为所述自定义格式后,同步到所述流处理平台中。
10.更进一步地,基于第二数据库,所述第二引擎通过结构化查询语言语句执行更新操作。
11.本发明实施例还提供一种基于实时数仓框架的业务消息处理装置,应用于上述的实时数仓框架中,包括:
12.消息获取模块,用于获取第一数据库中的业务消息,并将所述业务消息解析为自定义格式;
13.发送模块,用于将解析后所述自定义格式的业务消息发送至流处理平台中;
14.写入模块,用于第一引擎通过执行结构化查询语言语句查询所述流处理平台中的业务消息,对所述业务消息进行流式处理后写入所述流处理平台中;
15.处理模块,用于通过第二引擎将所述流处理平台中的业务消息采集到统一数仓查询框架中进行实时统计。
16.更进一步地,所述消息获取模块,还用于:通过消息中间件将数据库中的业务消息解析为所述自定义格式后,同步到所述流处理平台中。
17.更进一步地,所述装置还包括:更新模块,用于基于第二数据库,所述第二引擎通过结构化查询语言语句执行更新操作。
18.本发明实施例还提供一种存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现上述的基于实时数仓框架的业务消息处理方法。
19.本发明实施例还提供一种计算机设备,包括存储介质、处理器及存储在存储介质上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现上述的基于实时数仓框架的业务消息处理方法。
20.由于现有技术中的实时数仓框架存在flink sql不支持phoenix、flnk sql不支持的数据格式导致使用不方便、开发效率低的问题,所以通过配置化flink sql、自定义flink sql与phoenix查询引擎的连接器、设置自定义格式、对flink sql添加自定义format,解决了现有技术中flink sql不支持phoenix的问题、解决flnk sql不支持的数据格式问题,以及有助于提升系统开发效率。通过该方法配置的实时数仓框架,数据update支持性非常好,能够达到毫秒级别、满足海量数据实时统计、可执行类sql语句、通过解决canal数据格式受限问题,满足了复杂的业务需求。
附图说明
21.图1是本发明实施例提供的一种实时数仓框架的搭建方法的流程示意图;
22.图2是本发明实施例提供的一种实时数仓框架的示意图;
23.图3是本发明实施例提供的一种基于实时数仓框架的业务消息处理方法的流程示意图;
24.图4是本发明实施例提供的一种基于实时数仓框架的业务消息处理装置的结构示意图。
具体实施方式
25.为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对
本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
26.本发明实施例通过配置化flink sql、自定义flink sql与phoenix查询引擎的连接器、设置业务对应的自定义格式、对flink sql添加自定义format等技术手段,旨在解决现有技术中实时数仓框架存在的flink sql不支持phoenix、flnk sql不支持的数据格式导致使用不方便、开发效率低的问题,提供一种支持update操作、能够满足业务需求、可执行类sql语句的实时数仓框架。
27.实施例一
28.在本实施例中提供了一种实时数仓框架的搭建方法,如图1所示,该方法包括:
29.步骤101,将结构化查询语言语句通过页面配置进行保存,以通过第一引擎读取所述页面配置执行对应的所述sql语句;
30.步骤102,通过预设连接器,建立所述第一引擎与第二引擎之间的连接;
31.步骤103,配置解析模块,其中,所述解析模块用于实时将第一数据库中的业务消息解析为自定义格式,并将解析后的业务消息写入流处理平台中;
32.步骤104,对所述第一引擎添加格式化程序,以使所述第一引擎支持所述自定义格式;
33.步骤105,配置统一数仓查询框架,以通过所述统一数仓查询框架对所述业务消息进行实时统计。
34.上述实施例提供的方法可以实现对实时数仓框架的搭建,为满足业务的复杂业务需求,通过自研的产品,将flink sql、phoenix、canal和自定义数据格式结合在一起,通过开发一整套的实时数仓架构,有效的解决复杂业务遇到的问题。首先,通过调度配置框架,使得第一引擎flink sql配置化,结构化查询语言(structured query language,sql)语句通过页面配置保持到数据库,flink sql通过读取配置,执行对应的sql语句,避免对sql语句硬编码。其次,由于业界上大多数的大数据数据库,更多关注的是海量的数据处理,对更新的实时性支持不够,而是基于to b企业,对数据的更新很频繁,数据统计要求100%准确,数据更新要求在毫秒级内体现。第二引擎phoenix是基于hbase的大数据框架,可以很好的跟hbase融合,同时update等操作支持非常好,又是类sql语句,可以满足业务的要求。flink sql是flink新框架,支持基于类似sql语句格式实现数据的流式处理,但flink sql目前不支持phoenix,因此本发明进行自定义连接器的开发,通过自定义的预设连接器建立flink sql与phoenix查询引擎之间的连接,解决flink sql不支持phoenix的问题,使得实时数仓框架既可以满足海量数据实时统计的需求,又能够支持毫秒级别的update操作。接着,业务消息一般通过消息中间件传输,例如canal组件是用java开发的基于数据库增量日志解析,提供增量数据订阅&消费的中间件,canal可以将mysql的数据同步到流处理平台kafka,但该组件不能完全满足复杂业务需求,因此本发明对canal的源码和数据格式进行了完全的自定义,以满足复杂的业务需求,具体通过配置解析模块,实现实时将mysql数据库即第一数据库中的业务消息解析为自定义格式,并将解析后的业务消息写入kafka中,解析模块可以在canal中,也可以借助其他中间件实现。进一步,flink sql支持canal数据格式,但flink sql无法解析同步到kafka的数据格式,为使flink sql能够配合业务使用,对所述第一引擎添加格式化程序,以使所述第一引擎支持所述自定义格式,解决flnk sql不支持的
数据格式问题,flink sql有一种叫“upsert kafka”的连接方式,使得kafka支持删除操作,对于删除操作,采用往kafka写空消息来表示,但该方式跟现有的逻辑差别很大,采用该方式将导致需要修改大量的数据处理,通过修改自定义数据格式,将数据转换成自定义格式,使得实现类似“upser kafka”的连接方式,从而使得flink sql能够解析同步到kafka中相应数据格式的业务消息。最后,配置统一数仓查询框架,通过统一的配置模型,同时支持mysql和phoenix的实时统计,满足业务的需求。
35.通过应用本实施例的技术方案,解决了现有技术中flink sql不支持phoenix的问题、解决flnk sql不支持的数据格式问题,以及有助于提升系统开发效率。通过该方法配置的实时数仓框架,数据update支持性非常好,能够达到毫秒级别、满足海量数据实时统计、可执行类sql语句、通过解决canal数据格式受限问题,满足了复杂的业务需求。
36.如图2所示,在一个具体实施例中,调度配置框架:使得flink sql配置化,sql语句通过页面配置保持到数据库,flink sql通过读取配置,执行对应的sql,避免对sql语句硬编码。自定义连接器:主要是实现flink sql的phoenix查询引擎连接器。自定义数据结构:改写canal,采用自定义的数据结构。自定义数据结构:改写canal,采用自定义的数据结构。自定义flink数据:给flink sql增加自定义format,使其支持自定义数据结构。统一输出查询框架:通过统一的配置模型,同时支持mysql和phoenix的实时统计。
37.在本发明实施例中,具体地,所述配置解析模块,包括:配置消息中间件,将所述消息中间件的数据格式改写为所述自定义格式,以通过所述消息中间件将所述第一数据库中的业务消息解析为所述自定义格式后,同步到所述流处理平台中。
38.在该实施例中,消息中间件canal能够实现将mysql数据实时同步到kafka,但canal的数据格式相对于业务来说比较难以使用,比如说,更新操作,旧的数据并没有返回没有更新的字段数据,通过自定义数据格式,使得业务使用更加方便。
39.进一步的,本发明实施例还提供了一种实时数仓框架,通过上述的实时数仓框架的搭建方法搭建而成。该实时数仓框架,数据update支持性非常好,能够达到毫秒级别、满足海量数据实时统计、可执行类sql语句、通过解决canal数据格式受限问题,满足了复杂的业务需求。
40.实施例二
41.在本实施例中提供了一种基于实时数仓框架的业务消息处理方法,如图3所示,该方法包括:
42.步骤201,获取第一数据库中的业务消息,并将所述业务消息解析为自定义格式;
43.步骤202,将解析后所述自定义格式的业务消息发送至流处理平台中;
44.步骤203,第一引擎通过执行结构化查询语言语句查询所述流处理平台中的业务消息,对所述业务消息进行流式处理后写入所述流处理平台中;
45.步骤204,通过第二引擎将所述流处理平台中的业务消息采集到统一数仓查询框架中进行实时统计。
46.在该实施例中,基于实时数仓框架可以实现对业务消息的处理,在具体应用场景中,获取第一数据库中的业务消息后,为使flink sql能够配合业务使用,将所述业务消息解析为自定义格式,而后将解析后自定义格式的业务消息发送至kafka中,flink sql通过执行sql语句查询kafka中的业务消息,该业务消息的数据格式可以被flink sql解析,业务
消息被处理后,再将处理后的业务消息进行流式处理后写入kafka中,进而,通过第二引擎将所述流处理平台中的业务消息采集到统一数仓查询框架中进行实时统计。
47.在本发明实施例中,具体地,通过消息中间件将数据库中的业务消息解析为所述自定义格式后,同步到所述流处理平台中。
48.在该实施例中,通过canal组件对mysql数据库中的业务消息进行解析,解析为自定义格式后同步到kafka中。
49.本发明实施例中,具体地,还可以包括:基于第二数据库,所述第二引擎通过结构化查询语言语句执行更新操作。
50.在该实施例中,phoenix是基于第二数据库hbase的大数据框架,可以很好的跟hbase融合,同时update等操作支持非常好,达到毫秒级别的更新,因此phoenix查询引擎可以通过sql语句执行更新操作。
51.实施例三
52.作为图3方法的具体实现,本技术实施例提供了一种基于实时数仓框架的业务消息处理装置,如图4所示,该装置包括:
53.消息获取模块,用于获取第一数据库中的业务消息,并将所述业务消息解析为自定义格式;
54.发送模块,用于将解析后所述自定义格式的业务消息发送至流处理平台中;
55.写入模块,用于第一引擎通过执行结构化查询语言语句查询所述流处理平台中的业务消息,对所述业务消息进行流式处理后写入所述流处理平台中;
56.处理模块,用于通过第二引擎将所述流处理平台中的业务消息采集到统一数仓查询框架中进行实时统计。
57.更进一步地,所述消息获取模块,还用于:通过消息中间件将数据库中的业务消息解析为所述自定义格式后,同步到所述流处理平台中。
58.更进一步地,所述装置还包括:更新模块,用于基于第二数据库,所述第二引擎通过结构化查询语言语句执行更新操作。
59.需要说明的是,本技术实施例提供的一种日志获取装置所涉及各功能单元的其他相应描述,可以参考图2方法中的对应描述,在此不再赘述。
60.基于上述如图2所示方法,相应的,本技术实施例还提供了一种存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述如图2所示的日志获取方法。
61.基于这样的理解,本技术的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是cd-rom,u盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施场景所述的方法。
62.基于上述如图2所示的方法,以及图3所示的虚拟装置实施例,为了实现上述目的,本技术实施例还提供了一种计算机设备,具体可以为个人计算机、服务器、网络设备等,该计算机设备包括存储介质和处理器;存储介质,用于存储计算机程序;处理器,用于执行计算机程序以实现上述如图2所示的日志获取方法。
63.可选地,该计算机设备还可以包括用户接口、网络接口、摄像头、射频(radio frequency,rf)电路,传感器、音频电路、wi-fi模块等等。用户接口可以包括显示屏
(display)、输入单元比如键盘(keyboard)等,可选用户接口还可以包括usb接口、读卡器接口等。网络接口可选的可以包括标准的有线接口、无线接口(如蓝牙接口、wi-fi接口)等。
64.本领域技术人员可以理解,本实施例提供的一种计算机设备结构并不构成对该计算机设备的限定,可以包括更多或更少的部件,或者组合某些部件,或者不同的部件布置。
65.存储介质中还可以包括操作系统、网络通信模块。操作系统是管理和保存计算机设备硬件和软件资源的程序,支持信息处理程序以及其它软件和/或程序的运行。网络通信模块用于实现存储介质内部各组件之间的通信,以及与该实体设备中其它硬件和软件之间通信。
66.本领域技术人员可以理解附图只是一个优选实施场景的示意图,附图中的模块或流程并不一定是实施本技术所必须的。本领域技术人员可以理解实施场景中的装置中的模块可以按照实施场景描述进行分布于实施场景的装置中,也可以进行相应变化位于不同于本实施场景的一个或多个装置中。上述实施场景的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
67.通过应用本实施例的技术方案,解决了现有技术中flink sql不支持phoenix的问题、解决flnk sql不支持的数据格式问题,以及有助于提升系统开发效率。通过该方法配置的实时数仓框架,数据update支持性非常好,能够达到毫秒级别、满足海量数据实时统计、可执行类sql语句、通过解决canal数据格式受限问题,满足了复杂的业务需求。
68.以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1