掌桥专利:专业的专利平台
掌桥专利
首页

数据处理方法、装置及计算机可读存储介质

文献发布时间:2023-06-19 10:54:12


数据处理方法、装置及计算机可读存储介质

技术领域

本申请涉及计算机技术领域,特别的涉及一种数据处理方法、装置及计算机可读存储介质。

背景技术

随着软件程序功能的日益复杂,程序的配置也越来越多,如各种数据库配置、应用配置、服务器配置等,但是往往在实际使用过程中如果能够支持动态配置的话,应用就会显得更加灵活可控。

现有的动态配置方式一般包括两种,其一是在启动或者停止程序的过程中,通过启停脚本,传递配置参数到程序中,实现对配置参数的使用,以达到动态配置的效果,但这种方式需要多次重新启动程序。其二是通过配置管理中心工具实时获取更新的配置参数,并直接将更新的配置参数加载于正在运行的程序中,这种方式虽然不需要停止程序,但在应用Flink SQL处理数据时无法加载配置参数,进而导致无法动态更新配置参数。

发明内容

本申请实施例提供了一种数据处理方法、装置及计算机可读存储介质,可在应用Flink SQL处理数据时使用业务动态配置参数。

第一方面,本申请实施例提供了一种数据处理方法,包括:

获取业务数据流,并获取用于处理业务数据流的Flink SQL任务;

获取Flink SQL任务中的业务配置参数,并将业务配置参数写入至数据库中;

将数据库与业务数据流进行维表关联,生成处理数据。

第二方面,本申请实施例提供了一种数据处理装置,包括:

获取模块,用于获取业务数据流,并获取用于处理业务数据流的Flink SQL任务;

第一处理模块,用于获取Flink SQL任务中的业务配置参数,并将业务配置参数写入至数据库中;

第二处理模块,用于将数据库与业务数据流进行维表关联,生成处理数据。

第三方面,本申请实施例又提供了一种数据处理装置,包括处理器、存储器以及通信接口;

处理器与存储器、通信接口相连;

存储器,用于存储可执行程序代码;

处理器通过读取存储器中存储的可执行程序代码来运行与可执行程序代码对应的程序,以用于执行本申请实施例第一方面实现方式提供的数据处理方法。

第四方面,本申请实施例提供了一种计算机可读存储介质,计算机存储介质存储有计算机程序,计算机程序包括程序指令,程序指令当被处理器执行时,可实现本申请实施例第一方面实现方式提供的数据处理方法。

第五方面,本申请实施例提供了一种计算机程序产品,当该计算机程序产品在数据处理装置上运行时,使得该数据处理装置执行本申请实施例第一方面实现方式提供的数据处理方法。

在本申请实施例中,通过获取业务数据流,并获取用于处理业务数据流的FlinkSQL任务,然后获取Flink SQL任务中的业务配置参数,并将业务配置参数写入至数据库中,进而将数据库与业务数据流进行维表关联,生成处理数据。可在应用Flink SQL处理数据时将更改或新增的业务配置参数保存在可与Flink SQL进行维表关联的数据库中,以使FlinkSQL在无需重新启动的情况下实时加载业务配置参数。

附图说明

为了更清楚地说明本申请实施例中的技术方案,下面将对实施例中所需使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本申请实施例提供的一种用于数据处理方法的配置参数流程示意图;

图2为本申请实施例提供的一种数据处理方法的流程示意图;

图3为本申请实施例提供的一种Flink任务递交流程示意图;

图4为本申请实施例提供的又一种数据处理方法的流程示意图;

图5为本申请实施例提供的一种数据处理装置的结构示意图;

图6为本申请实施例提供的又一种数据处理装置的结构示意图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。

本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其他步骤或单元。

本申请在下文中提到的:

Redis:Remote Dictionary Server,即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的应用程序接口(Application Programming Interface,API)。

Flink:开源流处理框架,其核心是用Java和Scala编写的分布式流数据流引擎。Flink以数据并行和流水线方式执行任意流数据程序,Flink的流水线运行时系统可以执行批处理和流处理程序。

SQL:Structured Query Language,结构化查询语言,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。其中,Flink SQL可理解为在Flink运行任务时用SQL进行数据处理。

Kafka:一种开源流处理平台,由Scala和Java编写。Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者在网站中的所有动作流数据。这种动作(网页浏览,搜索和其他用户的行动)是在现代网络上的许多社会功能的一个关键因素。这些数据通常是由于吞吐量的要求而通过处理日志和日志聚合来解决。对于像Hadoop一样的日志数据和离线分析系统,但又要求实时处理的限制,这是一个可行的解决方案。Kafka的目的是通过Hadoop的并行加载机制来统一线上和离线的消息处理,也是为了通过集群来提供实时的消息。

请参阅图1,图1示出了本申请实施例提供的一种用于数据处理方法的配置参数流程示意图。

现有的一些开发方式,可通过配置管理中心工具(例如但不限于携程Apollo)获取动态配置参数。例如可参阅图1所示的配置管理架构100,该配置管理架构100可包括配置用户界面101、客户端服务102、配置数据库103、客户端服务104以及客户端105。具体的,开发人员可在配置用户界面101输入与任务对应的配置参数,在客户端服务102监听到有输入的配置参数的情况下,由客户端102将监听到的配置参数保存至配置数据库103中。其中,客户端102可不局限于为一种服务器,用于监听配置用户界面101是否输入有配置参数。进一步的,配置数据库103在保存该配置参数后,可由客户端服务104从配置数据库103中调取该配置参数并将该配置参数分配至相应客户端105。其中,哭护短服务104可不局限于一种服务器,用于将从配置数据库103获取的配置参数分配至客户端105。需要说明的是,当客户端服务102监听到配置用户界面101输入有更改的配置参数或新增的配置参数时,将该更改的配置参数或新增的配置参数保存至配置数据库中,并由客户端服务104从配置数据库103中调取该更改的配置参数或新增的配置参数并将该更改的配置参数或新增的配置参数分配至客户端105,以实现配置参数的更新及获取。

以开发方式为java为例,java设置有与客户端服务102相同作用的监听客户端,用于监听输入的配置参数是否更新或新增,并将更新或新增的配置参数直接加载至正在处理的任务中。

本申请提到的客户端105可为一个客户端或多个客户端,其中多个客户端可为客户端1、客户端2、客户端3。可以理解地,图1所示的配置管理架构中的客户端服务102、客户端服务104以及客户端105的数目仅作为示例,在具体实现中,该配置管理架构可以包含任意数目的客户端服务102、客户端服务104以及客户端105。本申请实施例对此不作限定,例如但不限于,客户端服务102可以是多个服务器组成的服务器群。

请参阅图2,图2示出了本申请实施例提供的一种数据处理方法的流程示意图。

如图2所示,该数据处理方法包括:

步骤201、获取业务数据流,并获取用于处理业务数据流的Flink SQL任务。

具体地,本申请的执行体可为通过Flink SQL运行任务的后台服务器,获取需要处理的业务数据流以及用于处理该业务数据流的Flink SQL任务。

其中,后台服务器可主要包括JobManager和TaskManager,并遵循Master-Slave架构设计原则将JobManager作为Master节点,TaskManager作为Worker节点。

具体的,可由客户端将任务提交到后台服务器集群中与JobManager构建Akka连接,然后将任务提交到JobManager,通过和JobManager之间进行交互获取任务执行状态。其中客户端提交任务可采用CLI方式或者通过使用Flink WebUI提交,也可以在应用程序中指定JobManager的RPC网络端口构建ExecutionEnvironment提交Flink应用。进一步的,JobManager根据集群中TaskManager上TaskSlot的使用情况,为提交的应用分配相应的TaskSlot资源并命令TaskManager启动从客户端中获取的应用。TaskManager从JobManager接收需要部署的任务之后,使用Slot资源启动Task,建立数据与接入网络的连接,接收数据并开始数据处理。其中JobManager和TaskManager之间通过Actor System进行通信,获取任务执行的情况并通过Actor System将应用的任务执行情况发送给客户端。同时,在任务执行的过程中JobManager会触发Checkpoint操作,每个TaskManager节点收到Checkpoint触发指令后,完成Checkpoint操作,所有的Checkpoint协调过程都是在JobManager中完成。

后台服务器获取用于处理业务数据流的Flink SQL任务的流程还可参阅图3示出的本申请实施例提供的一种Flink任务递交流程示意图。如图3所示,该Flink任务递交流程可包括客户端301、JobManager302以及TaskManager303。具体的,可由开发人员在客户端301上写入程序代码,其中客户端301可为一种服务器(与上文提到的服务器不相同),且该程序代码可为SQL查询语句。进一步的通过优化器对该程序代码进行优化,在该程序代码能够正常编译通过的情况下由开发人员选择递交指令并将该优化的程序代码经应用程序接口(API)发送至JobManager302。JobManager302在接收到该程序代码后根据TaskManager303上TaskSlot的使用情况,为提交的任务分配相应的TaskSlot资源并命令TaskManager303启动从客户端中获取的应用。其中,TaskManager303可包括一个或多个TaskManager,对于多个TaskManager之间的数据交互可通过数据流的方式进行。

作为本申请的一个实施例,获取业务数据流,包括:

从Kafka中获取业务数据流,其中Kafka用于接收并保存业务数据流。

具体地,后台服务器可从Kafka中获取已保存的业务数据流,其中Kafka可用于接收电子设备发送的业务数据流,例如但不限于电子设备发送的广告主白名单配置、广告曝光数据等。

本实施例的电子设备可以是手机、平板电脑、桌面型、膝上型、笔记本电脑、超级移动个人计算机(Ultra-mobile Personal Computer,UMPC)、手持计算机、上网本、个人数字助理(Personal Digital Assistant,PDA)、可穿戴电子设备、虚拟现实设备等。

步骤202、获取Flink SQL任务中的业务配置参数,并将业务配置参数写入至数据库中。

具体地,后台服务器还可获取Flink SQL任务中对应于业务数据流的业务配置参数,并将该业务配置参数保存至数据库中。例如,后台服务器可根据获取的Flink SQL任务,从配置文件或递交指令中获取对应于Flink SQL任务的业务配置参数,并将该业务配置参数保存至可与Flink SQL进行表之间关联操作的数据库中。

步骤203、将数据库与业务数据流进行维表关联,生成处理数据。

具体地,后台服务器可将保存至数据库中的业务配置参数与业务数据流进行维表关联,即可以理解为使用业务数据流表与保存为维表形式的业务配置参数进行join操作,将业务数据流表的数据与维表形式的业务配置参数进行整合得到目标数据表。

其中,维表可以理解为是一张不断变化的表,通过维表join语法将以维表形式的业务配置参数写入至业务数据流表中。

还需要注意的是,Flink SQL关联维表的方式可包括实时数据库查找关联(Per-Record Reference Data Lookup)、预加载维表关联(Pre-Loading of Reference Data)和维表变更日志关联(Reference Data Change Stream),在本实施例中优选采用实时数据库查找关联中的异步数据库查找关联对维表形式的业务配置参数进行关联。

在本实施例中,可在应用Flink SQL处理数据时将更改或新增的业务配置参数保存在可与Flink SQL进行维表关联的数据库中,以使Flink SQL在无需重新启动的情况下实时使用业务配置参数,提高开发效率的同时降低维护成本,给用户带来更好的体验。

作为本申请的又一个实施例,数据库可为Redis数据库,将业务配置参数写入至数据库中包括:将业务配置参数写入至Redis数据库中的Redis维表;

将数据库与业务数据流进行维表关联,生成处理数据包括:

读取Redis数据库中的Redis维表,将Redis维表与业务数据流进行维表关联,得到目标数据表。

具体地,后台服务器可将获取的业务配置参数保存至Redis数据库中,其中Redis数据库存储有可与Flink SQL进行表之间关联操作的Redis维表。需要说明的是,本实施例不局限于Redis数据库以及Redis维表,还可为其他支持Flink SQL维表join操作的数据库。

进一步的,后台服务器可将写入有业务配置参数的Redis维表与业务数据流表进行整合,以使业务配置参数加入至业务数据流表得到目标数据表。

作为本申请的又一个实施例,获取Flink SQL任务中的业务配置参数,包括:

启动客户端服务,基于客户端服务拉取Flink SQL任务中的业务配置参数。

具体地,后台服务器还可通过配置管理中心工具对业务配置参数进行获取。例如,开发人员可在配置管理中心的用户界面输入业务配置参数,该业务配置参数可保存至配置数据库中。后台服务器通过启动客户端服务并由该客户端服务向配置数据库拉取已配置的业务配置参数,并将该业务配置参数保存至数据库中。其中,数据库可不局限于为可与Flink SQL进行表之间关联操作的Redis数据库。

作为本申请的又一个实施例,数据库可为Redis数据库,将业务配置参数保存至Redis数据库中的Redis维表,包括:

采用预设的缓存机制将Redis维表中的业务配置参数进行缓存。

具体地,为降低Redis数据库读取数据的压力以及提高关联数据的性能,还可将维表中的数据按照预设的缓存机制缓存起来,利用调取的方式从Redis数据库中得到已保存的数据,并通过Redis维表与数据流表进行维表关联。

其中,预设的缓存机制可为按照预设时间间隔将维表中的数据缓存,预设时间间隔可为1分钟、2分钟、3分钟...,优选的可设置预设时间间隔为1分钟。

请参阅图4,图4示出了本申请实施例提供的又一种数据处理方法的流程示意图。

如图4所示,该数据处理方法包括:

步骤401、获取业务数据流,并获取用于处理业务数据流的Flink SQL任务。

具体地,步骤401与步骤201一致,此处不再赘述。

步骤402、获取Flink SQL任务中的业务配置参数,并将业务配置参数写入至数据库中。

具体地,步骤402与步骤202一致,此处不再赘述。

步骤403、若业务配置参数发生更新,则拉取更新的业务配置参数,并将更新的业务配置参数写入至数据库中。

具体地,后台服务器可通过配置管理中心工具获取配置的业务配置参数,并将业务配置参数保存至配置数据库中,启动客户端服务对配置数据库进行监听。若客户端服务在配置数据库监听到配置数据库中的业务配置参数发生更改的业务配置参数或是新增有其他业务配置参数,则拉取当前配置数据库中发生更改的业务配置参数或是新增有其他业务配置参数并写入至数据库中,以实现业务配置参数的实时获取。其中,数据库可不局限于为可与Flink SQL进行表之间关联操作的Redis数据库。

其中,客户端服务可按照预设监听时间间隔对配置数据库中的业务配置参数进行监听,例如监听时间间隔可选取为30秒,即可以理解为客户端服务每隔30秒监听一次配置数据库中的业务配置参数是否更新或新增。

步骤404、将写入有更新的业务配置参数的数据库与业务数据流进行维表关联,得到目标数据表。

具体地,后台服务器使用业务数据流表与保存为维表形式的更新的业务配置参数进行join操作,将业务数据流表的数据与维表形式的更新的业务配置参数进行整合得到目标数据表。

以数据库为Redis数据库为例,后台服务器可将客户端服务从配置数据库中拉取发生更改的业务配置参数或是新增有其他业务配置参数并保存至Redis数据库的Redis维表中,并将该更新的Redis维表与数据流表进行关联操作得到目标数据表。需要说明的是,后台服务器可一直运行Redis维表与数据流表的关联操作,即可实时将发生更新的Redis维表与数据流表进行关联,便于将实时的业务配置参数写入至数据流表中。

请参阅图5,图5示出了本申请实施例提供的一种数据处理装置的结构示意图。

如图5所示,该数据处理装置500至少可以包括获取模块501、第一处理模块502及第二处理模块503。其中:

获取模块501,用于获取业务数据流,并获取用于处理业务数据流的Flink SQL任务;

第一处理模块502,用于获取Flink SQL任务中的业务配置参数,并将业务配置参数写入至数据库中;

第二处理模块503,用于将数据库与业务数据流进行维表关联,生成处理数据。

在本申请实施例中,可在应用Flink SQL处理数据时将更改或新增的业务配置参数保存在可与Flink SQL进行维表关联的数据库中,以使Flink SQL在无需重新启动的情况下实时使用业务配置参数,提高开发效率的同时降低维护成本,给用户带来更好的体验。

在一些可能的实施例中,数据库为Redis数据库;

第一处理模块502将业务配置参数写入至数据库中,包括:

将业务配置参数写入至Redis数据库中的Redis维表;

第二处理模块503将数据库与业务数据流进行维表关联,生成处理数据,包括:

读取Redis数据库中的Redis维表,将Redis维表与业务数据流进行维表关联,得到目标数据表。

在一些可能的实施例中,第一处理模块502获取Flink SQL任务中的业务配置参数,包括:

启动客户端服务,基于客户端服务拉取Flink SQL任务中的业务配置参数。

在一些可能的实施例中,第一处理模块502将业务配置参数保存至Redis数据库中的Redis维表,包括:

采用预设的缓存机制将Redis维表中的业务配置参数进行缓存。

在一些可能的实施例中,该装置还包括:

第三处理模块,用于在第二处理模块503将数据库与业务数据流进行维表关联,生成处理数据之前,若业务配置参数发生更新,则拉取更新的业务配置参数,并将更新的业务配置参数写入至数据库中;

第二处理模块503用于将写入有更新的业务配置参数的数据库与业务数据流进行维表关联,得到目标数据表。

在一些可能的实施例中,获取模块501获取业务数据流,包括:

从Kafka中获取业务数据流;Kafka用于接收并保存业务数据流。

请参阅图6,图6示出了本申请实施例提供的又一种数据处理装置的结构示意图。

如图6所示,该数据处理装置600可以包括:至少一个处理器601、至少一个网络接口604、用户接口603、存储器605以及至少一个通信总线602。

其中,通信总线602可用于实现上述各个组件的连接通信。

其中,用户接口603可以包括按键,可选用户接口还可以包括标准的有线接口、无线接口。

其中,网络接口604可选的可以蓝牙模块、NFC模块、Wi-Fi模块等。

其中,处理器601可以包括一个或者多个处理核心。处理器601利用各种接口和线路连接整个电子设备600内的各个部分,通过运行或执行存储在存储器605内的指令、程序、代码集或指令集,以及调用存储在存储器605内的数据,执行电子设备600的各种功能和处理数据。可选的,处理器601可以采用DSP、FPGA、PLA中的至少一种硬件形式来实现。处理器601可集成CPU、GPU和调制解调器等中的一种或几种的组合。其中,CPU主要处理操作系统、用户界面和应用程序等;GPU用于负责显示屏所需要显示的内容的渲染和绘制;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到处理器601中,单独通过一块芯片进行实现。

其中,存储器605可以包括RAM,也可以包括ROM。可选的,该存储器605包括非瞬时性计算机可读介质。存储器605可用于存储指令、程序、代码、代码集或指令集。存储器605可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作系统的指令、用于实现上述各个方法实施例的指令等;存储数据区可存储上面各个方法实施例中涉及到的数据等。存储器605可选的还可以是至少一个位于远离前述处理器601的存储装置。如图6所示,作为一种计算机存储介质的存储器605中可以包括操作系统、网络通信模块、用户接口模块以及数据处理应用程序。

具体地,处理器601可以用于调用存储器605中存储的数据处理应用程序,并具体执行以下操作:

获取业务数据流,并获取用于处理业务数据流的Flink SQL任务;

获取Flink SQL任务中的业务配置参数,并将业务配置参数写入至数据库中;

将数据库与业务数据流进行维表关联,生成处理数据。

在一些可能的实施例中,数据库为Redis数据库;

处理器601将业务配置参数写入至数据库中,执行:

将业务配置参数写入至Redis数据库中的Redis维表;

处理器601将所述数据库与业务数据流进行维表关联,生成处理数据,执行:

读取Redis数据库中的Redis维表,将Redis维表与业务数据流进行维表关联,得到目标数据表。

在一些可能的实施例中,处理器601获取Flink SQL任务中的业务配置参数,执行:

启动客户端服务,基于客户端服务拉取Flink SQL任务中的业务配置参数。

在一些可能的实施例中,处理器601将业务配置参数保存至Redis数据库中的Redis维表,执行:

采用预设的缓存机制将Redis维表中的业务配置参数进行缓存。

在一些可能的实施例中,处理器601将数据库与业务数据流进行维表关联,生成处理数据之前,还执行:

若业务配置参数发生更新,则拉取更新的业务配置参数,并将更新的业务配置参数写入至数据库中;

处理器601将数据库与业务数据流进行维表关联,生成处理数据,执行:

将写入有更新的业务配置参数的数据库与业务数据流进行维表关联,得到目标数据表。

在一些可能的实施例中,处理器601获取业务数据流,执行:

从Kafka中获取业务数据流;Kafka用于接收并保存业务数据流。

本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机或处理器上运行时,使得计算机或处理器执行上述图2或图4所示实施例中的一个或多个步骤。上述数据处理装置的各组成模块如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在所述计算机可读取存储介质中。

在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者通过所述计算机可读存储介质进行传输。所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(Digital SubscriberLine,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,数字多功能光盘(Digital VersatileDisc,DVD))、或者半导体介质(例如,固态硬盘(Solid State Disk,SSD))等。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关的硬件来完成,该程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可存储程序代码的介质。在不冲突的情况下,本实施例和实施方案中的技术特征可以任意组合。

以上所述的实施例仅仅是本申请的优选实施例方式进行描述,并非对本申请的范围进行限定,在不脱离本申请的设计精神的前提下,本领域普通技术人员对本申请的技术方案作出的各种变形及改进,均应落入本申请的权利要求书确定的保护范围内。

相关技术
  • PET 数据处理方法、PET 数据处理装置、计算机可读的存储介质、以及数据处理方法
  • 一种数据处理方法、装置、计算机设备和计算机可读存储介质
技术分类

06120112722745