发明内容
本说明书实施例提供一种数据处理方法、装置及设备,用于解决如下问题:以提供一种更准确的数据处理方法。
基于此,本说明书实施例提供一种数据处理方法,包括:
接收待处理数据;
将所述待处理数据划分为多个数据集,确定每个数据集所对应的数据集标识,其中,所述数据集标识具有确定的顺序;
按照所述顺序,依次处理所述多个数据集,生成对应的多个处理结果;
针对所述处理结果,生成对应的处理结果标识,并存储所述多个处理结果和对应的处理结果标识,其中,所述处理结果标识与所述数据集标识相对应。
同时,本说明书的实施例还提供一种数据处理装置,包括:
接收模块,接收待处理数据;
划分模块,将所述待处理数据划分为多个数据集,确定每个数据集所对应的数据集标识,其中,所述数据集标识具有确定的顺序;
生成模块,按照所述顺序,依次处理所述多个数据集,生成对应的多个处理结果;
存储模块,针对所述处理结果,生成对应的处理结果标识,并存储所述多个处理结果和对应的处理结果标识,其中,所述处理结果标识与所述数据集标识相对应。
对应的,本说明书实施例还提供一种数据处理设备,所述设备包括:
通讯接口,接收待处理数据;
存储器,存储数据处理程序;
处理器,在接收到待处理数据后,调用存储器中的存储的数据处理程序,并执行:
将所述待处理数据划分为多个数据集,确定每个数据集所对应的数据集标识,其中,所述数据集标识具有确定的顺序;
按照所述顺序,依次处理所述多个数据集,生成对应的多个处理结果;
针对所述处理结果,生成对应的处理结果标识,并存储所述多个处理结果和对应的处理结果标识,其中,所述处理结果标识与所述数据集标识相对应。
对应的,本说明书的实施例还提供一种非易失性计算机存储介质,存储有计算机可执行指令,所述计算机可执行指令设置为:
监听待处理数据;
将所述待处理数据划分为多个数据集,确定每个数据集所对应的数据集标识,其中,所述数据集标识具有确定的顺序;
按照所述顺序,依次处理所述多个数据集,生成对应的多个处理结果;
针对所述处理结果,生成对应的处理结果标识,并存储所述多个处理结果和对应的处理结果标识,其中,所述处理结果标识与所述数据集标识相对应。
本说明书实施例采用的上述至少一个技术方案能够达到以下有益效果:
采用本说明实施例的方案,在接收到数据流时,将数据流划分为带有顺序编号的多块数据集,然后按照编号的顺序依次处理每个数据集,每次处理结束后都存储本次处理的结果和对应的处理结果编号。
本说明书的实施例通过将数据划分为带标识的数据集,根据标识顺序处理所述数据集,从而实现对数据的准确处理。此外,当处理数据出错的时候,能够准确的回滚,重新继续处理。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
基于前述内容,所述的待处理数据可以是静态的数据,例如存储于各种数据库中的交易数据、资源数据等等,也可以是实时接收的数据流。
在本说明书的实施例中,所述的数据处理方法可采用如图1所示的架构,在所述架构中,待处理数据可以是从网络上所实时接收到的,处理设备针对接收到的待处理数据进行相应的处理,存储设备可用于存储由处理设备生成的结果以及在处理过程中生成的其它记录。
图1只是一种简单的架构示意图,在实际应用中,存储设备可以有多种形式,例如硬盘、内存、数据库等,所述处理设备可包括各种CPU、GPU、服务器等等。存储设备和处理设备均可以是分布式、集群式或者是区块链式的组成形式。
下面将基于如图1所示的架构,详细说明本说明书的实施例提供的数据处理过程,该过程具体包括以下步骤,如图2所示:
步骤S201,接收待处理数据。
基于前述内容,本说明书中的实施例虽然也可以运用在静态数据上,但是更多的运用在处理数据流上,即,处理设备持续地接收大量数据。
步骤S203,将所述待处理数据划分为多个数据集,确定每个数据集所对应的数据集标识,其中,所述数据集标识具有确定的顺序。
在接收待处理数据时,可以根据预设条件,将接收到的所述待处理数据划分为多个数据集,其中,所述预设条件包括时间条件和/或数量条件。例如,每过一定时间间隔划分一个数据集,或者,每接收到一定数量的数据划分一个数据集,或者,在一定时间内满足一定数据量才划分一个数据集,具体的划分情况根据业务需求而定,此处不做限定。
划分时可采用如下方法:插入多个屏障数据至所述待处理数据中,将两个相邻的屏障数据之间的数据划为一个数据集。屏障数据可根据某种条件(例如时间或者数量条件)自动生成,也可人工手动生成。屏障数据通常为无意义的数据,实际处理过程不会处理屏障数据,即,屏障数据不影响待处理数据的处理结果。
此外,在划分数据集的过程中,还可采用消息队列来实现。即,在消息队列中记录每个数据集的起始偏移量和最终偏移量,从而可以保证每个数据集的确定性。
划分出的每个数据集,均有一个对应的数据集标识。所述的数据集标识是预先设置的,且具有确定的顺序,例如:从barrier(1)、barrier(2)顺序编号直至barrier(n)。显然,前例只是顺序编号的一种实现方式,采用其他方式的顺序别号也是可以实现的,如采用字母顺序等等,此处就不再一一列举。
步骤S205,按照所述顺序,依次处理所述多个数据集,生成对应的多个处理结果。
在上述处理过程中,以数据集作为处理单位。即,当整个数据集中的数据收集完全以后才会开始处理该数据集,并且按照顺序依次处理每个数据集,对一个数据集处理完毕以后才会开始处理下一个数据集。但是,在处理单个数据集中的数据时,可以按照顺序进行,也可以乱序进行。
每处理一个数据集则生成一个对应的处理结果,该处理结果将作为处理下一个数据集的依据。
步骤S207,针对所述处理结果,生成对应的处理结果标识,并存储所述多个处理结果和对应的处理结果标识,其中,所述处理结果标识与所述数据集标识相对应。
对于每一个处理结果,均生成一个对应的处理结果标识,然后存储处理结果和对应的处理结果标识,例如将二者以键值对的方式进行打包存储。
其中,所述处理结果标识与所述数据集标识相对应。作为一种实际应用的方式,可采取如下实现方式:同一个数据集的数据集标识和处理结果标识相同。作为另一种实际应用的方式,二者也可以不同。例如数据集标识采用自然数顺序编号1、2、3、4等,而处理结果标识采用字母顺序编号a、b、c、d等,只需二者之间有确定的对应关系即可。
通过前述的方法,本说明书的实施例通过将数据划分为带标识的数据集,根据标识顺序处理所述数据集,从而实现对数据的准确处理。
此外,当处理某个数据集出现错误时,例如在集群中的某台机器宕机,或者网络中断再恢复。此时,很容易出现丢失数据、计算不准确。在这种情况下,本说明中前述的实施例还可以包括如下方法,如图3所示:
步骤S301,当处理任一数据集出错时,确定上一次处理的数据集;
步骤S303,根据所述上一次处理的数据集,确定处理出错的数据集,重新处理所述处理出错的数据集。
上述的重新处理,指的是从出错的数据集开始,继续前述步骤S205和S207。
作为本说明书实施例的一种可实施方案,前述的步骤S301,当处理任一数据集出错时,确定上一次处理的数据集,可采用如下实现方式,如图4所示:
步骤S401,获取已存储的多个处理结果各自对应的处理结果标识,其中,多个处理结果标识的顺序与数据集标识的顺序对应。
由于处理结果标识与数据集标识具有对应关系,而数据集标识的顺序是已经确定的,对应的,处理结果标识的顺序也是确定的。
步骤S403,根据所述多个处理结果标识的顺序,获取排列最后的处理结果标识。
步骤S405,确定排列最后的处理结果标识对应的数据集标识所属的数据集,作为所述上一次处理的数据集。
作为上述实现方式的一种可选方案,当同一个数据集的数据集标识和处理结果标识相同时,则在存储信息中找到排序最靠后的数据集标识,进而根据该数据集标识确定上一次处理的数据集和该数据集的处理结果。
通过上述的方法,在处理任一数据集出错的时候,本说明书的实施例能够准确的回滚,以便重新继续处理。
为使本说明书所提供的方案更加的浅显易懂,下面列举一个更为直观的示例,加以说明,如图5所示。
在数据处理中,常见的应用方式是统计数据流中的某个属性值,以获取相关的信息。
如前述内容,待处理数据流可以是从网络上所实时接收到的。例如,统计某交易平台当天发生的交易次数,在统计的同时,大量交易仍在继续发生,形成包含大量数据的数据流。
为此,将数据流根据数据量进行划分,每隔一定数据量即划分一个数据集,并且每个数据集对应一个数据集标识,记为barrier(1)、barrier(2)直至barrier(n)。在本示例中,同一个数据集的处理结果标识和数据集标识相同。
现假设M为某key(例如,当天发生的交易次数)的当前统计值,接下来的数据中,关于该key,数据集barrier(1)中有C1条记录,数据集barrier(2)中有C2条记录,以此类推,数据集barrier(n)有Cn条记录。
在处理完数据集barrier(1)之后,处理结果为M+C1,根据对应的数据结果标识barrier(1),生成存储记录R1:<key,M+C1,barrier(1)>,并存储;
在处理完数据集barrier(1)之后,根据其处理结果,处理数据集barrier(2),获得处理结果为M+C1+C2,生成存储记录R2:<key,M+C1+C2,barrier(2)>,并存储;
依次处理数据集至barrier(n),获得处理结果为M+ΣCn,生成存储记录Rn:<key,M+ΣCn,barrier(n)>,并存储。其中,ΣCn=C1+C2+…+Cn。
在前述过程中,若在处理任一数据集时出现错误,例如在处理数据集barrier(X)时发生错误,则开始回滚,回滚的方式为:
获取已存储的多个处理结果各自对应的处理结果标识,也就是从barrier(1)直到barrier(X-1);
根据所述多个处理结果标识的顺序,获取排列最后的处理结果标识,也就是得到处理结果标识barrier(X-1);
确定排列最后的处理结果标识对应的数据集标识所属的数据集,作为所述上一次处理的数据集。由于在本示例中,同一个数据集的处理结果标识和数据集标识相同,即根据处理结果标识barrier(X-1),在存储结果中确定存储记录<key,M+ΣC(X-1),barrier(X-1)>,以及确定数据集barrier(X-1)为上一次处理过的,接下来根据该key上一次的处理结果M+ΣC(X-1),从数据集barrier(X)开始,重新处理。
在上述示例中,对数据集标识使用了连续编号,但是在实际应用中,也可包含不连续的情形,只需数据集标识具有确定的顺序即可。
基于同样的思路,本发明还提供一种数据存储装置,如图6所示,所述装置包括:
接收模块601,接收待处理数据;
划分模块603,将所述待处理数据划分为多个数据集,确定每个数据集所对应的数据集标识,其中,所述数据集标识具有确定的顺序;
生成模块605,按照所述顺序,依次处理所述多个数据集,生成对应的多个处理结果;
存储模块607,针对所述处理结果,生成对应的处理结果标识,并存储所述多个处理结果和对应的处理结果标识,其中,所述处理结果标识与所述数据集标识相对应。
进一步地,所述划分模块603,根据预设条件,将接收到的所述待处理数据划分为多个数据集,其中,所述预设条件包括时间条件和/或数量条件。
进一步地,所述划分模块603,插入多个屏障数据至所述待处理数据中,将两个相邻的屏障数据之间的数据划为一个数据集。
进一步地,所述生成模块605,针对每一数据集,根据该数据集的数据以及前一数据集的处理结果,生成该数据集的处理结果。
进一步地,所述装置还包括重新处理模块609,当处理任一数据集出错时,确定上一次处理的数据集,根据所述上一次处理的数据集,确定处理出错的数据集,重新处理所述处理出错的数据集。
更进一步地,所述重新处理模块609,获取已存储的多个处理结果各自对应的处理结果标识,其中,多个处理结果标识的顺序与数据集标识的顺序对应,根据所述多个处理结果标识的顺序,获取排列最后的处理结果标识,确定排列最后的处理结果标识对应的数据集标识所属的数据集,作为所述上一次处理的数据集。
对应的,本申请实施例还提供一种数据处理设备,所述设备包括:
通讯接口,接收待处理数据;
存储器,存储数据处理程序;
处理器,在接收到待处理数据后,调用存储器中的存储的数据处理程序,并执行:
将所述待处理数据划分为多个数据集,确定每个数据集所对应的数据集标识,其中,所述数据集标识具有确定的顺序;
按照所述顺序,依次处理所述多个数据集,生成对应的多个处理结果;
针对所述处理结果,生成对应的处理结果标识,并存储所述多个处理结果和对应的处理结果标识,其中,所述处理结果标识与所述数据集标识相对应。
基于同样的发明思路,本申请实施例还提供了对应的一种非易失性计算机存储介质,存储有计算机可执行指令,所述计算机可执行指令设置为:
监听待处理数据;
将所述待处理数据划分为多个数据集,确定每个数据集所对应的数据集标识,其中,所述数据集标识具有确定的顺序;
按照所述顺序,依次处理所述多个数据集,生成对应的多个处理结果;
针对所述处理结果,生成对应的处理结果标识,并存储所述多个处理结果和对应的处理结果标识,其中,所述处理结果标识与所述数据集标识相对应。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、设备和介质类实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可,这里就不再一一赘述。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤或模块可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device,PLD)(例如现场可编程门阵列(Field Programmable GateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware DescriptionLanguage)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(RubyHardware Description Language)等,目前最普遍使用的是VHDL(Very-High-SpeedIntegrated Circuit Hardware Description Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本说明书的实施例时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信编号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本说明书中一个或多个的实施例可提供为方法、系统或计算机程序产品。因此,本说明书的实施例可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的形式。而且,本说明书的实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本说明书的实施例可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定事务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本说明书的实施例,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行事务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本说明书的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本说明书的实施例可以有各种更改和变化。凡在本说明书的实施例的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利范围之中。