一种实现数据处理的方法、装置、计算机存储介质及终端与流程

文档序号:22387804发布日期:2020-09-29 17:50阅读:108来源:国知局
一种实现数据处理的方法、装置、计算机存储介质及终端与流程

本文涉及但不限于大数据技术,尤指一种实现数据处理的方法、装置、计算机存储介质及终端。



背景技术:

在一些需要应用包含多种类数据的组织机构,往往存储有大量的数据;从存储的数据中计算出需要的数据,是一项复杂的工作。计算数据的过程称之为建模,建模包括:1、生成模型,即根据数据的各计算需求逐步往dag中拖入节点,最终生成由拖入的节点组成的有向无环图(dag),节点包括用于存储数据的数据节点,和对数据进行筛选、关联和提取数据项等数据操作的节点;2、通过dag中的数据节点加载数据后,根据dag中包含的除数据节点以外的其他节点,对数据节点中加载的数据进行数据操作,完成建模。

相关技术中,需要在dag中完成所有节点的添加后,采用同步方式进行所有节点的数据操作,直至完成建模。这种建模方法处理时间长,而且,当节点出现数据操作失败时,需要对整个dag中的节点都重新进行处理,计算数据的效率低;此外,由于所有节点同步操作,因此无法确定中间节点(dag中包含前置节点和后置节点的节点;前置节点为往当前节点输入数据的节点;后置节点为当前节点进行数据操作后,数据操作结果输出的节点)的操作状态和数据,影响技术人员掌握建模进度。



技术实现要素:

以下是对本文详细描述的主题的概述。本概述并非是为了限制权利要求的保护范围。

本发明实施例提供一种实现数据处理的方法、装置、计算机存储介质及终端,能够降低建模所需时长,提升建模效率。

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

将有向无环图dag中新增的节点,根据预设策略划分为算子节点或非算子节点;

对划分的算子节点和非算子节点,分别采用不同运算处理能力的执行引擎进行数据操作;

其中,所述非算子节点包括:可通过结构化查询语言sql进行数据操作的节点;所述算子节点包括除非算子节点以外的节点。

另一方面,本发明实施例还提供一种计算机存储介质,所述计算机存储介质中存储有计算机程序,所述计算机程序被处理器执行时实现上述实现数据处理的方法。

再一方面,本发明实施例还提供一种终端,包括:存储器和处理器,所述存储器中保存有计算机程序;其中,

处理器被配置为执行存储器中的计算机程序;

所述计算机程序被所述处理器执行时实现如上述实现数据处理的方法。

还一方面,本发明实施例还提供一种实现数据处理的装置,包括:划分单元和处理单元;其中,

划分单元设置为:将有向无环图(dag)中新增的节点,根据预设策略划分为算子节点或非算子节点;

处理单元设置为:对划分的算子节点和非算子节点,分别采用不同运算处理能力的执行引擎进行数据操作;

其中,所述非算子节点包括:可通过结构化查询语言sql进行数据操作的节点;所述算子节点包括除非算子节点以外的节点。

本发明实施例在往有向无环图(dag)中新增节点时,即时的进行算子节点和非算子节点的节点类型划分;在未生成完整dag时,对不同种类的节点,实时的采用不同运算处理能力的执行引擎进行节点的数据操作,降低了建模所需时长,提升了建模效率。

本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。

附图说明

附图用来提供对本发明技术方案的进一步理解,并且构成说明书的一部分,与本申请的实施例一起用于解释本发明的技术方案,并不构成对本发明技术方案的限制。

图1为本发明实施例实现数据处理的方法的流程图;

图2为本发明实施例实现数据处理的装置的结构框图;

图3本发明应用示例的方法流程图;

图4为本发明应用示例单节点执行引擎的组成示意图;

图5为本应用示例非算子节点进行数据操作的示意图;

图6为本应用示例算子节点进行数据操作的示意图;

图7为本应用示例dag示意图;

图8为本应用示例另一dag示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。

在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行。并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。

图1为本发明实施例实现数据处理的方法的流程图,如图1所示,包括:

步骤101、将有向无环图(dag)中新增的节点,根据预设策略划分为算子节点或非算子节点;

其中,非算子节点包括:可通过结构化查询语言(sql)进行数据操作的节点;算子节点包括除非算子节点以外的节点。

本发明实施例中的节点类型的划分,可以通过预先设置的处理器执行。

在一种示例性实例中,本发明实施例中的可通过sql进行的数据操作包括以下一项或任意组合:

筛选、分组、关联、交集、并集和差集。

需要说明的是,本发明实施例可通过sql进行的数据操作,可以由本领域技术人员根据建模场景进行增删调整;同一数据操作,可能因为建模场景的不同被划分为不同的节点类型(算子节点和非算子节点);例如,可以由技术人员根据存储的数据量和数据操作的内容,对上述非算子节点的运算量进行预估,将部分运算量较大的可通过sql进行的数据操作划分为算子节点;通过将该部分运算量较大的非算子节点调整为算子节点,可以使节点合理利用运算资源进行数据操作从而提升了建模过程的运算速度。

在一种示例性实例中,本发明实施例中的算子节点包括进行以下一项或任意组合的数据操作的节点:

抽样、概率与数理统计和数据关系分析。

本发明实施例根据数据操作的复杂程度,将数据操作简单的节点划分为非算子节点,将数据操作复杂的节点划分为算子节点;为将不同节点交由不同运算处理能力的执行引擎进行数据操作提供前期准备。

步骤102、对划分的算子节点和非算子节点,分别采用不同运算处理能力的执行引擎进行数据操作。

本发明实施例在往有向无环图(dag)中新增节点时,即时的进行算子节点和非算子节点的节点类型划分;在未生成完整dag时,对不同种类的节点,实时的采用不同运算处理能力的执行引擎进行节点的数据操作,降低了建模所需时长,提升了建模效率。

在一种示例性实例中,本发明实施例步骤102之前还包括:

dag中每一次新增节点时,以入口节点作为起点对dag进行遍历,确定各节点进行数据操作的顺序。这里,入口节点指dag中没有前置节点的节点,入口节点为本领域技术人员的公知定义,在此不做赘述。

需要说明的是,对dag进行遍历时,可以根据节点的数据输入输出关系确定。例如、dag中,节点1、节点2、节点3和节点4中用于写入存储的数据;节点5与节点1连接,用于对从节点1输入的数据进行筛选,节点6与节点2连接,用于对从节点2输入的数据进行筛选,节点7与节点3连接,用于对从节点3输入的数据进行筛选,节点8与节点4连接,用于对从节点4输入的数据进行筛选;节点9与节点5和节点6连接,用于接收节点5和节点6的输出数据后,对接收的数据进行关联操作,节点10与节点7和节点8连接,用于接收节点7和节点8的输出数据后,对接收的数据进行关联操作;节点11与节点9和节点10连接,用于接收节点9和接收10的输出数据后,进行合并操作;根据节点数据操作的内容,可以确定节点的前置节点和后置节点,根据遍历dag可以确定各节点前置节点和后置节点,一次确定各节点的数据操作顺序。

本发明实施例在dag新增节点时,确定各节点进行数据操作的顺序,无需在生成dag后,对所有节点进行同步的数据操作,提升了建模效率。

在一种示例性实例中,步骤102分别采用不同运算处理能力的执行引擎进行数据操作,包括:

节点被划分为非算子节点时,通过presto执行引擎进行节点的数据操作;其中,presto是一个开源的分布式sql查询引擎,适用于交互式分析查询,数据量支持兆字节(gb)到拍字节(pb);

节点被划分为算子节点时,通过spark2执行引擎进行节点的数据操作;其中,spark是基于内存计算的大数据并行计算框架,提高了其在大数据环境下数据处理的实时性,同时保证了高容错性和高可伸缩性,spark是加州大学伯克利分校算法、机器和人员实验室(amp,algorithmsmachinesandpeoplelab)实验室开发的通用内存并行计算框架。

本发明实施例中对不同类型的节点,分别采用不同运算处理能力的执行引擎进行数据操作,较采用统一的执行引擎进行数据操作,在建模过程中实现了运算性能的合理应用。

在一种示例性实例中,通过presto执行引擎进行节点的数据操作,包括:

对各非算子节点,分别编译对应于其进行的数据操作的sql语句;

将编译的sql语句提交至presto执行引擎;

通过爪哇数据库连接(jdbc)驱动提交到presto执行引擎中的sql语句,以进行节点的数据操作。

在一种示例性实例中,通过spark2执行引擎进行节点的数据操作,包括:

对各算子节点,分别生成对应于其进行的数据操作的操作函数;

在spark2执行引擎中运行生成的操作函数,以进行节点的数据操作。

在一种示例性实例中,按预设策略划分节点的类型为算子节点或非算子节点之后,本发明实施例方法还包括:

对节点的数据操作进行失败、或接收到对节点重新进行数据操作的预设指令时,对该节点重新采用相应的执行引擎进行数据操作;和/或,

对dag中节点进行的数据操作进行调整时,将调整数据操作的节点重新划分为算子节点或非算子节点;对该节点重新采用相应的执行引擎进行数据操作。

在一种示例性实例中,对节点的数据操作失败可以包括:配置节点进行数据操作的时长阈值;节点进行数据操作的时长大于时长阈值时,判定节点的数据操作进行失败。本发明实施例对调整数据操作的节点、运算失败的节点、需要重新进行数据操作的节点,配置其可单独进行数据操作,无需重新进行建模处理,避免了中间节点的数据操作对其他节点的数据操作造成影响。

在一种示例性实例中,执行步骤102时,本发明实施例方法还包括:

对每一个节点,记录以下一项或任意组合的信息:

节点新增至dag中的时间,节点完成数据操作的时间和节点进行数据操作的结果。

本发明实施例在节点进行数据操作时,对节点处理状态和时间进行了记录,为用户掌握建模进度提供信息支持。

本发明实施例还提供一种计算机存储介质,计算机存储介质中存储有计算机程序,计算机程序被处理器执行时实现上述实现数据处理的方法。

本发明实施例还提供一种终端,包括:存储器和处理器,存储器中保存有计算机程序;其中,

处理器被配置为执行存储器中的计算机程序;

计算机程序被处理器执行时实现如上述实现数据处理的方法。

图2为本发明实施例实现数据处理的装置的结构框图,如图2所示,包括:划分单元和处理单元;其中,

划分单元设置为:将有向无环图(dag)中新增的节点,根据预设策略划分为算子节点或非算子节点;

在一种示例性实例中,本发明实施例中的可通过sql进行的数据操作包括以下一项或任意组合:

筛选、分组、关联、交集、并集和差集。

在一种示例性实例中,本发明实施例中的算子节点包括进行以下一项或任意组合的数据操作的节点:

抽样、概率与数理统计和数据关系分析。

处理单元设置为:对划分的算子节点和非算子节点,分别采用不同运算处理能力的执行引擎进行数据操作;

其中,非算子节点包括:可通过结构化查询语言sql进行数据操作的节点;算子节点包括除非算子节点以外的节点。

在一种示例性实例中,本发明实施例装置还包括遍历单元,设置为:

dag中每一次新增节点时,以入口节点作为起点对dag进行遍历,确定各节点进行数据操作的顺序。

在一种示例性实例中,本发明实施例中的处理单元包括第一处理模块和第二处理模块;其中,

第一处理模块设置为:节点被划分为非算子节点时,通过presto执行引擎进行节点的数据操作;其中,presto是一个开源的分布式sql查询引擎,适用于交互式分析查询,数据量支持兆字节(gb)到拍字节(pb);

第二处理模块设置为:节点被划分为算子节点时,通过spark2执行引擎进行节点的数据操作;其中,spark是基于内存计算的大数据并行计算框架,提高了其在大数据环境下数据处理的实时性,同时保证了高容错性和高可伸缩性,spark是加州大学伯克利分校算法、机器和人员实验室(amp,algorithmsmachinesandpeoplelab)实验室开发的通用内存并行计算框架。

在一种示例性实例中,第一处理模块是设置为:

对各非算子节点,分别编译对应于其进行的数据操作的sql语句;

将编译的sql语句提交至presto执行引擎;

通过爪哇数据库连接(jdbc)驱动提交到presto执行引擎中的sql语句,以进行节点的数据操作。

在一种示例性实例中,第二处理模块是设置为:

对各算子节点,分别生成对应于其进行的数据操作的操作函数;

在spark2执行引擎中运行生成的操作函数,以进行节点的数据操作。

在一种示例性实例中,本发明实施例中的处理单元还设置为:

对节点的数据操作进行失败、或接收到对节点重新进行数据操作的预设指令时,对该节点重新采用相应的执行引擎进行数据操作;

在一种示例性实例中,本发明实施例中的处理单元还设置为:

对dag中节点进行的数据操作进行调整时,将调整数据操作的节点重新划分为算子节点或非算子节点;对该节点重新采用相应的执行引擎进行数据操作。

在一种示例性实例中,对节点的数据操作失败可以包括:配置节点进行数据操作的时长阈值;节点进行数据操作的时长大于时长阈值时,判定节点的数据操作进行失败。本发明实施例对调整数据操作的节点、运算失败的节点、需要重新进行数据操作的节点,配置其可单独进行数据操作,无需重新进行建模处理,避免了中间节点的数据操作对其他节点的数据操作造成影响。

在一种示例性实例中,本发明实施例中的装置还包括记录单元,设置为:

对每一个节点,记录以下一项或任意组合的信息:

节点新增至dag中的时间,节点完成数据操作的时间和节点进行数据操作的结果。

以下通过应用示例对本发明实施例进行简要说明,应用示例仅用于陈述本发明实施例,并不用于限制本发明的保护范围。

应用示例

本应用示例以单节点执行引擎作为执行主体进行示例说明,单节点执行引擎主体由presto执行引擎、spark2执行引擎和hive(hive是基于分布式系统(hadoop)的一个数据仓库工具,用来进行数据提取、转化、加载,这是一种可以存储、查询和分析存储在hadoop中的大规模数据的机制)组成。图3本发明应用示例的方法流程图,如图3所示,包括:

步骤301、单节点执行引擎将新增至dag中的节点,划分为算子节点和非算子节点;

在dag新增节点(往dag中拖入节点)时,单节点执行引擎可以实时的将节点划分为算子节点和非算子节点。

步骤302、单节点执行引擎从dag的入口节点开始,确定各节点进行数据操作的顺序;这里,入口节点指dag中没有前置节点的节点;

在一种示例性实例中,本发明实施例对节点执行数据操作前,可以以入口节点作为遍历起点,对dag进行遍历,确定dag中包含的节点的数据操作顺序;

步骤303、单节点执行引擎通过异步线程池,为算子节点和非算子节点分别调用分别采用不同运算处理能力的执行引擎进行节点的数据操作。

本应用示例节点为算子节点时,通过spark2执行数据操作;节点为非算子节点时,通过presto执行数据操作。

在一种示例性实例中,执行数据操作的数据可以存放在hive上;spark2和presto可以设置为从hive读取数据。图4为本发明应用示例单节点执行引擎的组成示意图,如图4所示,单节点执行引擎中包括:异步线程池、presto执行引擎、spark2执行引擎、及用于数据存储的memory和hive;其中,执行操作时,数据可以存储在hive中;memory为presto执行引擎内的组件。

本应用示例接收到预设的对节点重新执行数据操作的指令时,根据确定的节点类型,重新调用相应的执行引擎进行数据操作,重新调用执行引擎进行数据操作的结果会覆盖在前数据操作的结果;已有节点接收到调整指令进行数据操作的调整时,对完成数据操作调整的节点,本应用示例单节点引擎可以对节点类型(算子节点或非算子节点)进行划分,完成类型划分后,重新调用相应的执行引擎进行数据操作;

本应用示例presto执行引擎是一个开源的分布式sql查询引擎,可对250pb以上的数据进行快速地交互式分析,适用于秒级查询的场景,是基于内存的处理。presto执行引擎是可以支持多种数据源引擎,presto执行引擎存储介质包括hive和memory;在执行操作时,hive中的数据会被加载到memory中,以提高运行速度。presto和spark2执行数据操作时,数据存储在hive中。

图5为本应用示例非算子节点进行数据操作的示意图,如图5所示,包括:

步骤501、对各非算子节点,分别编译对应于其进行的数据操作的sql语句;

步骤502、将编译的sql语句提交至presto执行引擎;

步骤503、通过爪哇数据库连接(jdbc)驱动提交到presto执行引擎中的sql语句,以进行节点的数据操作。

本应用示例进行数据操作过程中的中间数据可以存储在memory中,数据操作的结果可以存储在hive中。以下就不同数据操作的非算子节点,编译对应的sql语句进行示例说明:筛选操作可以编译为sql对应的where条件、分组操作可以编译为sql对应的groupby,关联操作可以编译为sql对应的join、交集操作可以编译为sql对应的innerjoin、并集操作可以编译为sql对应的union、差集操作可以编译为sql对应except。

需要说明的是,本应用示例可以对非算子节点进行的数据操作进行分析,预先编辑和存储对应于各数据操作的sql语句。

图6为本应用示例算子节点进行数据操作的示意图,如图6所示,包括:

步骤601、对各算子节点,分别生成对应于其进行的数据操作的操作函数;这里,操作函数一般定义了输入数据、对输入数据进行的处理;通过操作函数可以执行算子节点的数据操作,输出相应的结果集;假设存储的数据包括:人员表、私家车出行信息表、大巴出行记录表、火车出行记录表和飞机出行记录表;算子节点需要执行的数据操作为:确定在2020年2月1号到2020年4月1号去过a地的用户名称及身份证号,及张三的出行次数;编辑并允许操作函数后,可以输出“姓名、身份证号、次数”这三项数据。

步骤602、在spark2执行引擎中运行生成的操作函数,以进行节点的数据操作。

需要说明的是,本应用示例可以对算子节点包含的所有数据操作进行分析,预先生成和存储对应于各数据操作的操作函数。

以下通过具体实例对本发明实施例进行说明,假设有如下模型:存储的数据包括:人员表、私家车出行信息表、大巴出行记录表、火车出行记录表和飞机出行记录表,模型需要计算计算出哪些用户在2020年2月1号到2020年4月1号去过某地,并统计某用户的出行次数;图7为本应用示例dag示意图,如图7所示,在dag中:第一行节点从左到右分别为数据节点1~8,用于加载存储的数据,数据存储于hive上;数据节点1~8为没有前置节点的节点,因此,该部分节点为入口节点;除最后一行的节点24作为入库节点,第二行从左到右分别为节点9~16、第三行从左到右分别为17~20、第四行从左到右分别为21和22、及第五行的节点23均为非算子节点,通过preso执行引擎进行数据操作,本应用示例入库节点的数据操作结果存储于hive中,中间节点进行数据操作的结果存储与preso执行引擎的memory组件中。

本应用示例,在进行数据操作过程中,每一个节点都可以查询数据操作结果、数据操作时间等信息。在单节点执行的过程中,假如某个中间节点计算失败,直接重新执行该节点即可。假如某个中间节点的前置节点没有计算成功或者计算结果被清除,单节点执行引擎会自动判断前置节点先运行。

图8为本应用示例另一dag示意图,如图8所示,在dag中:第一行节点分别为数据节点1~5,用于加载存储的数据,数据存储于hive上;第二行从左到右分别为节点6~10为非算子节点,这些节点进行数据操作的结果存储与preso执行引擎的memory组件中。第三行从左到右分别为节点11和12;其中,节点11为算子节点,其数据操作通过spark2执行引擎进行,数据操作结果存储于hive中;节点12为非算子节点,进行数据操作的结果存储于preso执行引擎的memory组件中。本应用示例模型可以指定节点运行,可以查看节点的数据操作状态及数据操作的结果。

本应用示例通过单节点引擎进行节点的数据操作,实现了节点数据操作的可查询,非算子节点和算子节点分别通过相应的执行引擎进行数据操作,保证了节点进行数据操作的速度。

“本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统、装置中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。在硬件实施方式中,在以上描述中提及的功能模块/单元之间的划分不一定对应于物理组件的划分;例如,一个物理组件可以具有多个功能,或者一个功能或步骤可以由若干物理组件合作执行。某些组件或所有组件可以被实施为由处理器,如数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读介质上,计算机可读介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于ram、rom、eeprom、闪存或其他存储器技术、cd-rom、数字多功能盘(dvd)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质”。

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