一种数据处理方法、装置、设备和存储介质与流程

文档序号:19188915发布日期:2019-11-20 01:50阅读:171来源:国知局
一种数据处理方法、装置、设备和存储介质与流程

本发明实施例涉及信息处理技术,尤其涉及一种数据处理方法、装置、设备和存储介质。



背景技术:

目前很多企业需要对大量分散、标准不统一的数据进行整合,以便为企业的决策提供分析依据。

etl(extract-transform-load,数据仓库技术)就是对大量数据进行抽取、清洗、转换,然后加载到数据仓库的技术。etl是构建数据仓库的重要一环,用户从数据源抽取出所需的数据,经过数据清洗,最终按照预先定义好的数据仓库模型,将数据加载到数据仓库中去。

但是目前的开源etl工具,往往只能支持部分数据源,当出现新的数据源时,就无法进行适用,或是新增数据源时,需要进行较大的改动。这样就使得扩展数据源的成本增加,不利于etl系统性能的提高。



技术实现要素:

本发明实施例提供一种数据处理方法、装置、设备和存储介质,以实现数据源通用,当出现新的数据源时,只需添加新的数据源读取类,以降低数据扩展成本,提高性能。

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

获取与目标任务对应的数据接入规则,所述数据接入规则包括任务信息和数据处理规则,所述任务信息中包括至少一项待处理的数据源;

根据所述任务信息,判断所述待处理的数据源的类型,并调用与每个所述数据源的类型分别对应的数据源读取类,读取至少一项数据源;

将读取得到的数据写入至消息队列中,从所述消息队列中获取所述数据,并根据所述数据处理规则对所述数据进行处理。

第二方面,本发明实施例还提供了一种数据处理装置,该装置包括:

数据接入规则获取模块,用于获取与目标任务对应的数据接入规则,所述数据接入规则包括任务信息和数据处理规则;

数据源读取模块,用于根据所述任务信息,判断数据源的类型,调用与每个所述数据源的类型分别对应的数据源读取类,根据所述数据源读取类读取至少一项数据源;

数据处理模块,用于将读取得到的数据写入至消息队列中,从所述消息队列中获取所述数据,并根据所述数据处理规则对所述数据进行处理。

本发明实施例的技术方案通过实现一种通用的数据处理装置,对不同的数据源,调用对应的数据源读取类,使得整个装置可以适用于多种不同的数据源,并可以进行扩展。解决了现有的开源etl工具中,只能适用于部分数据源,当出现新的数据源时无法适用或需要进行较大改动的问题,实现了多数据源通用,降低了增加新数据源时的扩展成本,提高了数据处理性能。

附图说明

图1是本发明实施例一中的一种数据处理方法的流程图;

图2是本发明实施例二中的一种数据处理方法的流程图;

图3是本发明实施例三中的一种数据处理装置的结构示意图;

图4是本发明实施例四中的一种数据处理设备的结构示意图。

具体实施方式

下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。

实施例一

图1为本发明实施例一提供的一种数据处理方法的流程图,本实施例可适用于对不同数据源的数据进行通用化的数据处理的情况,例如,企业将零散、杂乱的大量数据进行整合和处理,从而为公司决策提供分析依据的情况,该方法可以由数据处理装置来执行,该装置可以由软件和/或硬件来实现,并一般可以集成在具有数据处理功能的终端设备,或者是服务器中,具体包括如下步骤:

步骤110、获取与目标任务对应的数据接入规则,所述数据接入规则包括任务信息和数据处理规则,所述任务信息中包括至少一项待处理的数据源;

其中,任务信息可以描述需要接入的数据源的类型,数据源(datasource)顾名思义,数据的来源,是提供某种所需要数据的器件或原始媒体。在数据源中存储了所有建立数据库连接的信息。就像通过指定文件名称可以在文件系统中找到文件一样,通过提供正确的数据源名称,就可以找到相应的数据库连接。常见的数据源类型有:oracle、mysql、kafka等。

步骤120、根据所述任务信息,判断所述待处理的数据源的类型,并调用与每个所述数据源的类型分别对应的数据源读取类,读取至少一项数据源;

其中,数据源读取类为数据源读取代码封装而成,实现从数据库中读取特定类型数据的功能,例如,与上述oracle、mysql、kafka对应的数据源读取类分别为:oraclereader、mysqlreader、kafkareader。

步骤130、将读取得到的数据写入至消息队列中,从所述消息队列中获取所述数据,并根据所述数据处理规则对所述数据进行处理。

其中,消息队列是在消息的传输过程中保存消息的容器。在高并发环境下,由于来不及同步处理,请求往往会发生堵塞。通过使用消息队列,我们可以异步处理请求,从而缓解系统的压力。常见的消息队列类型有:linkedblockingqueue消息队列、linkedlist消息队列、kafka消息队列等,linkedblockingqueue是一个单向链表实现的阻塞队列,该队列按fifo(先进先出)排序元素,新元素插入到队列的尾部,并且队列获取操作会获得位于队列头部的元素,链接队列的吞吐量通常要高于基于数组的队列。linkedlist是一个双向链表,当数据较很大或者操作很频繁的情况下,添加和删除元素时具有更好的性能。kafka是一个分布式消息队列,具有高性能、持久化、多副本备份、横向扩展能力,生产者往队列里写消息,消费者从队列里取消息进行业务逻辑。以上列举的三种消息队列都可以适用于本步骤的情景中。优选的,适用linkedblockingqueue消息队列。这样设置的好处在于,linkedblockingqueue消息队列线程安全,适合多线程场景,队列容量相对较大,性能相对较高,写入、读取都能够实现阻塞的效果,自带jdk,不需要额外安装组件。

本实施例的技术方案,通过获取数据接入规则,并根据数据接入规则中的任务信息判断待处理数据源的类型,调用与数据源的类型对应的数据源读取类,读取数据源,将读取到的数据写入消息队列中,从消息队列中获取所述数据,根据数据接入规则中的数据处理规则对数据进行处理。解决了现有技术只支持部分数据源,无法实现多数据源通用的问题,达到了新增数据源时,只需增加新的数据源读取类,实现了多数据源通用,降低了增加新数据源时的扩展成本,提高了数据处理性能的效果。

在上述各实施例的基础上,可以将数据处理方法集成于网页web管理组件,以及至少一个数据接入组件中实现;相应的,本发明实施例的方法具体可以包括:

通过所述web管理组件获取与所述目标任务对应的所述数据接入规则;

通过所述数据接入组件根据所述任务信息,判断所述待处理的数据源的类型,并调用与每个所述数据源的类型分别对应的所述数据源读取类,读取至少一项所述数据源;

通过所述数据接入组件将读取得到的所述数据写入至所述消息队列中,从所述消息队列中获取所述数据,并根据所述数据处理规则对所述数据进行处理。

这样设置的好处在于:使用不同的组件实现不同类型的功能,可以使得本发明实施例的方案便于移植到其他终端设备或者服务器上实现,提高了方案实现的便利性。

可选的,所述数据接入组件为java存档文件jar包,这样设置的好处在于:java技术使应用程序能够并行执行,而且同步机制保证了对共享数据的正确操作。通过使用多线程,程序设计者可以分别用不同的线程完成特定的行为,而不需要采用全局的事件循环机制,这样就很容易实现网络上的实时交互行为。

实施例二

图2为本发明实施例二提供的一种数据处理方法的流程图,在本发明实施例一技术方案的基础上,本发明实施例进行了进一步的细化。对目标任务的创建、启动、处理以及停止等操作进行进一步具体化:相应的,本发明实施例的方法具体包括:

步骤210、通过所述web管理组件根据用户在可视化界面中输入的所述目标任务的创建指令,创建所述目标任务;

设置可视化管理界面的好处在于通过设置可视化的用户交互界面,使用户可以进行任务的创建、启动、停止等操作,管理目标任务,查看任务信息,具有良好的用户体验,提高交互性。

步骤220、通过所述web管理组件获取用户在所述可视化界面中针对所述目标任务上传的所述数据接入规则,所述数据接入规则包括任务信息和数据处理规则,所述任务信息中包括至少一项待处理的数据源;

步骤230、通过所述web管理组件如果检测到用户在所述可视化界面中输入的对所述目标任务的所述启动指令,则设置所述目标任务的处理状态为启动状态,启动所述目标任务;

步骤240、通过所述web管理组件向所述数据接入组件发送与所述目标任务对应的java存档文件jar命令,以控制所述数据接入组件开始执行数据的读取及处理操作,所述jar命令中包括有用于识别所述至少一项数据源的类型的任务信息;

其中,jar(javaarchive,java归档文件)是与平台无关的文件格式,它允许将许多文件组合成一个压缩文件。jar包就是将已经写好的一些类进行打包。可以将这些jar包引入项目中,可以直接使用这些jar包中的类和属性,这些jar包一般放在lib目录下。这样设置的好处在于:开发时如果要引用通用类,打成jar包的形式便于存放管理。

步骤250、通过所述数据接入组件调用与每个所述数据源的类型分别对应的所述数据源读取类;

在上述技术方案的基础上,步骤250具体包括:

通过所述数据接入组件根据所述数据源的类型,查找是否存在与所述数据源的类型对应的数据源读取类;

通过所述数据接入组件如果确定存在所述数据源读取类,则调用该数据源读取类;

通过所述数据接入组件如果确定不存在所述数据源读取类,则从读取类库中获取与所述数据源的类型对应的所述数据源读取类,添加于所述数据接入组件中,并调用该数据源读取类;

这样设置的好处在于,当添加新类型的数据源时,只需增加新的数据源读取类,对数据的处理过程是通用的。而数据源读取类的代码开发是相对容易的,因此扩展数据源的代价降低,可以实现多种数据源通用。

步骤260、通过所述数据接入组件建立第一数量的线程,并使用所述第一数量的线程根据所述数据源读取类对所述数据源进行读取;

步骤270、将读取得到的数据写入至消息队列中;

步骤280、通过所述数据接入组件建立第二数量的线程,并使用所述第二数量的线程从所述消息队列中获取所述数据,并在确定超过预设时间无法获取到数据时,停止所述目标任务;

其中,所述第一数量与所述第二数量的取值相同或者不同。这样设置的好处在于,在海量数据的场景下,由于数据源类型较多,不同类型的数据其读取速度和处理速度不同,通过调整读取数据的线程与处理数据的线程的数量,可以使数据读取与数据处理的速度实现平衡。

步骤290、根据所述数据处理规则对所述数据进行处理。

在上述实施例的基础上,所述web管理组件设置在主服务器上,所述数据接入组件设置在所述主服务器和至少一个从服务器上,或者,所述web管理组件与所述数据接入组件同时设置在所述主服务器上。

这样设置的好处在于,在海量数据的场景下,通过将web管理组件设置在主服务器上,将数据接入组件设置在所述主服务器和至少一个从服务器上,利用多台服务器进行数据的接入、处理,主服务器上的web管理组件进行统一管理,实现可拓展的集群模式,更好的满足性能要求。在数据量较少的场景下,将web管理组件与数据接入组件同时设置在主服务器上,既可以满足性能要求,又不会造成资源浪费。

在上述实施例的基础上,所述方法,还包括:通过所述web管理组件如果检测到对所述目标任务的停止指令,则设置所述目标任务的处理状态为停止状态,通过所述数据接入组件如果检测到所述目标任务的处理状态为停止状态,则停止所述数据的读取及处理操作。

在上述实施例的基础上,所述方法,还包括:数据接入组件在对数据进行处理的过程中,可以将目标任务的日志数据写入web管理组件的日志模块,所述日志数据包括数据接入量和数据输出量,以及错误信息等。用户可以在可视化界面中输入查看任务信息指令,所述web管理组件如果检测到所述查看任务信息指令,则在所述可视化界面中显示所述日志模块中的所述日志信息。

本实施例中,通过设置多线程的处理模式,调整读取数据的线程与处理数据的线程的数量,可以提高数据读取、处理的性能。通过设置web管理组件和数据接入组件的不同数量和位置,可以实现可拓展的集群模式,可以适用于海量数据的情境下,提高数据处理速度和性能。

实施例三

图3为本发明实施例三提供的一种数据处理装置的结构示意图,该数据处理装置包括:

数据接入规则获取模块310,用于获取与目标任务对应的数据接入规则,所述数据接入规则包括任务信息和数据处理规则;

数据源读取模块320,用于根据所述任务信息,判断数据源的类型,调用与每个所述数据源的类型分别对应的数据源读取类,根据所述数据源读取类读取至少一项数据源;

数据处理模块330,用于将读取得到的数据写入至消息队列中,从所述消息队列中获取所述数据,并根据所述数据处理规则对所述数据进行处理。

在上述各实施例的基础上,所述装置集成于网页web管理组件,以及至少一个数据接入组件中实现,其中,数据接入规则获取模块310集成于所述web管理组件中实现;

所述数据源读取模块320以及所述数据处理模块330集成于所述数据接入组件中实现。

在上述各实施例的基础上,所述数据接入组件为java存档文件jar包;

所述装置还包括:

启动状态设置单元,用于在通过所述web管理组件获取与目标任务对应的数据接入规则之后,通过所述web管理组件如果检测到对所述目标任务的启动指令,则设置所述目标任务的处理状态为启动状态;

jar命令发送单元,用于通过所述web管理组件向所述数据接入组件发送与所述目标任务对应的jar命令,以控制所述数据接入组件开始执行数据的读取及处理操作,所述jar命令中包括有用于识别所述至少一项数据源的类型的任务信息;

停止状态设置单元,用于通过所述web管理组件如果检测到对所述目标任务的停止指令,则设置所述目标任务的处理状态为停止状态;

所述装置还包括:停止处理模块,用于通过所述数据接入组件如果检测到所述目标任务的处理状态为停止状态,则停止所述数据的读取及处理操作。

在上述各实施例的基础上,数据源读取模块320,具体用于:

通过所述数据接入组件根据所述数据源的类型,查找是否存在与所述数据源的类型对应的数据源读取类;

通过所述数据接入组件如果确定存在所述数据源读取类,则调用该数据源读取类;

通过所述数据接入组件如果确定不存在所述数据源读取类,则从读取类库中获取与所述数据源的类型对应的所述数据源读取类,添加于所述数据接入组件中,并调用该数据源读取类;

在上述各实施例的基础上,数据源读取模块320,具体用于:

通过所述数据接入组件建立第一数量的线程,并使用所述第一数量的线程根据所述数据源读取类对所述数据源进行读取;

数据处理模块330,具体用于:

通过所述数据接入组件建立第二数量的线程,并使用所述第二数量的线程从所述消息队列中获取所述数据,并在确定超过预设时间无法获取到数据时,停止所述目标任务;

其中,所述第一数量与所述第二数量的取值相同或者不同。

在上述各实施例的基础上,所述web管理组件设置在主服务器上,所述数据接入组件设置在所述主服务器和至少一个从服务器上,或者,所述web管理组件与所述数据接入组件同时设置在所述主服务器上。

在上述各实施例的基础上,数据接入规则获取模块310,具体用于:

通过所述web管理组件根据用户在可视化界面中输入的所述目标任务的创建指令,创建所述目标任务;

通过所述web管理组件获取用户在所述可视化界面中针对所述目标任务上传的所述数据接入规则;

所述启动状态设置单元,具体用于:

通过所述web管理组件如果检测到用户在所述可视化界面中输入的对所述目标任务的所述启动指令,则设置所述目标任务的处理状态为启动状态,启动所述目标任务;

所述停止状态设置单元,具体用于:

通过所述web管理组件如果检测到用户在所述可视化界面中输入的对所述目标任务的所述停止指令,则设置所述目标任务的处理状态为停止状态,停止所述目标任务。

本发明实施例所提供的数据处理装置可执行本发明任意实施例所提供的数据处理方法,具备执行方法相应的功能模块和有益效果。

实施例四

图4为本发明实施例四提供的一种设备的结构示意图,如图4所示,该设备包括处理器40、存储器41、输入装置42和输出装置43;设备中处理器40的数量可以是一个或多个,图4中以一个处理器40为例;设备中的处理器40、存储器41、输入装置42和输出装置43可以通过总线或其他方式连接,图4中以通过总线连接为例。

存储器41作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例三中的数据处理方法对应的程序模块(例如,数据处理装置中的数据接入规则获取模块310、数据源读取模块320和数据处理模块330)。处理器40通过运行存储在存储器41中的软件程序、指令以及模块,从而执行设备的各种功能应用以及数据处理,即实现上述的数据处理方法。

存储器41可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端的使用所创建的数据等。此外,存储器41可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器41可进一步包括相对于处理器40远程设置的存储器,这些远程存储器可以通过网络连接至设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

输入装置42可用于接收输入的数字或字符信息,以及产生与设备的用户设置以及功能控制有关的键信号输入。输出装置43可包括显示屏等显示设备。

实施例五

本发明实施例五还提供一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行一种数据处理方法,该方法包括:

获取与目标任务对应的数据接入规则,所述数据接入规则包括任务信息和数据处理规则,所述任务信息中包括至少一项待处理的数据源;

根据所述任务信息,判断所述待处理的数据源的类型,并调用与每个所述数据源的类型分别对应的数据源读取类,读取至少一项数据源;

将读取得到的数据写入至消息队列中,从所述消息队列中获取所述数据,并根据所述数据处理规则对所述数据进行处理。

当然,本发明实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的方法操作,还可以执行本发明任意实施例所提供的数据处理方法中的相关操作。

通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、闪存(flash)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。

值得注意的是,上述搜索装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。

注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1