CN109710624A - 数据处理方法、装置、介质及电子设备 - Google Patents
数据处理方法、装置、介质及电子设备 Download PDFInfo
- Publication number
- CN109710624A CN109710624A CN201811554686.3A CN201811554686A CN109710624A CN 109710624 A CN109710624 A CN 109710624A CN 201811554686 A CN201811554686 A CN 201811554686A CN 109710624 A CN109710624 A CN 109710624A
- Authority
- CN
- China
- Prior art keywords
- data
- thread
- data set
- module
- processing
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种数据处理方法,包括:获取线程池中每个线程的数据集;根据所述每个线程的业务逻辑对所述每个线程的数据集进行处理:当处理结果显示所述数据集中存在数据异常时,按照预设规则对所述数据集进行拆分处理,得到所述数据集的异常数据,并对所述异常数据进行标注;按照预设的数据库操作类型将处理后的数据集的数据分别添加到相应的队列,这样可以准确快速的定位到数据集的异常数据,有效地避免了如果吞掉异常数据,则难保证数据的一致性,并且会对整个该队列批量提交的数据产生影响的缺陷。本发明还提供了一种数据处理装置、介质以及电子设备。
Description
技术领域
本发明涉及数据处理的技术领域,具体而言,涉及一种数据处理方法、装置、介质及电子设备。
背景技术
目前,多线程处理框架在大数据量的CPU密集型数据处理场景下可以发挥其并行运算能力,提高数据处理时效,同时在线程内部对关系型数据库存储采用批量提交机制可以更加充分地使用数据库资源,降低I/O等待时间,高效完成数据提交。根据目前的多次试验结果显示批量数据提交模式要比逐条数据处理效率至少提高5倍左右。在高并发中关系型数据库I/O等待是制约数据库性能的瓶颈之一,因此,将批量数据的提交模式集成到多线程处理框架中可以更有效地缓解多线程处理中对数据库的压力、弥补关系型数据库无法横向扩展的不足。
然而批量数据提交集中的事务异常管理是非常重要,如何在效率和异常捕获之间找到平衡是目前使用批量提交的一大难点。在批量数据提交机制中一条数据的异常会导致整个批量的数据单元集事务回滚,如果吞掉异常数据,则难保证数据的一致性,并且会对整个队列批量提交的数据产生影响,进而提高运维的难度和成本。
需要说明的是,在上述背景技术部分公开的信息仅用于加强对本发明的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。
发明内容
本发明实施例的目的在于提供一种数据处理方法、装置、介质及电子设备,进而至少可以在一定程度上定位到数据集中异常的数据,从而避免了如果吞掉异常数据,则难保证数据的一致性,并且会对整个队列批量提交的数据产生影响的缺陷。
本发明的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本发明的实践而习得。
根据本发明实施例的第一方面,提供了一种数据处理方法,该方法包括:获取线程池中每个线程的数据集;根据所述每个线程的业务逻辑对所述每个线程的数据集进行处理:当处理结果显示所述数据集中存在数据异常时,按照预设规则对所述数据集进行拆分处理,得到所述数据集的异常数据,并对所述异常数据进行标注;按照预设的数据库操作类型将处理后的数据集的数据分别添加到相应的队列。
在本发明的一些实施例中,当处理结果显示所述数据集中存在数据异常时,按照预设规则对所述数据集进行拆分处理,得到所述数据集的异常数据包括:当处理结果显示所述数据集中存在数据异常时,按照预设规则对所述数据集进行拆分,得到所述数据集的子数据集;根据所述每个线程的业务逻辑对所述数据集的每个子数据集进行处理;循环执行上述两个步骤直到定位到所述数据集的异常数据为止。
在本发明的一些实施例中,在获取线程池中每个线程的数据集之前,该方法还包括:判断所述线程池中线程的数量是否大于预设阈值;如果大于,则停止向所述线程池内添加新的线程。
在本发明的一些实施例中,该方法还包括:按照业务类型对所述线程池中的每个线程进行分类,以确保所述线程池中的多个线程之间在处理数据时相互独立。
在本发明的一些实施例中,所述获取线程池中每个线程的数据集包括:在多线程控制层分发线程时,判断所述线程池中是否存在与即将执行处理任务的线程类型相同的线程;如果存在,且该线程处于运行状态时,按照预设时长校验该线程已处理数据量的变化;根据校验结果,确定所述即将执行处理任务的线程的数据集。
在本发明的一些实施例中,在按照预设的数据库操作类型将处理后的数据集的数据分别添加到相应的队列之前,该方法还包括:判断所述队列中的数据量是否满足批量提交的条件;如果满足,则将所述队列的数据存储到关系型数据库。
在本发明的一些实施例中,在根据所述每个线程的业务逻辑对所述每个线程的数据集进行处理之后,该方法还包括:利用回调函数获取所述线程池中每个线程的处理结果和/或相关信息;将所述每个线程的处理结果和/或相关信息存储到日志数据库。
在本发明的一些实施例中,所述预设规则包括金字塔原则。
根据本发明实施例的第二方面,提供了一种数据处理装置,其特征在于,该方法包括:第一获取模块,用于获取线程池中每个线程的数据集;处理模块,用于根据所述每个线程的业务逻辑对所述每个线程的数据集进行处理:拆分处理模块,当处理结果显示所述数据集中存在数据异常时,按照预设规则对所述数据集进行拆分处理,得到所述数据集的异常数据,并对所述异常数据进行标注;添加模块,用于按照预设的数据库操作类型将处理后的数据集的数据分别添加到相应的队列。
在本发明的一些实施例中,拆分处理模块包括:拆分模块,当处理结果显示所述数据集中存在数据异常时,按照预设规则对所述数据集进行拆分,得到所述数据集的子数据集;第二处理模块,根据所述每个线程的业务逻辑对所述数据集的每个子数据集进行处理;循环模块,用于循环执行上述两个步骤直到定位到所述数据集的异常数据为止。
在本发明的一些实施例中,该装置还包括:第一判断模块,用于判断所述线程池中线程的数量是否大于预设阈值;停止模块,如果大于,则停止向所述线程池内添加新的线程。
在本发明的一些实施例中,该装置还包括:分类模块,用于按照业务类型对所述线程池中的每个线程进行分类,以确保所述线程池中的多个线程之间在处理数据时相互独立。
在本发明的一些实施例中,所述获第一取模块包括:第二判断模块,在多线程控制层分发线程时,判断所述线程池中是否存在与即将执行处理任务的线程类型相同的线程;校验模块,如果存在,且该线程处于运行状态时,按照预设时长校验该线程已处理数据量的变化;确定模块,用于根据校验结果,确定所述即将执行处理任务的线程的数据集。
在本发明的一些实施例中,该装置还包括:第三判断模块,用于判断所述队列中的数据量是否满足批量提交的条件;第一存储模块,如果满足,则将所述队列的数据存储到关系型数据库。
在本发明的一些实施例中,该装置还包括:第二获取模块,利用回调函数获取所述线程池中每个线程的处理结果和/或相关信息;第二存储模块,用于将所述每个线程的处理结果和/或相关信息存储到日志数据库。
在本发明的一些实施例中,所述预设规则包括金字塔原则。
根据本发明实施例的第三方面,提供了一种电子设备,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如上述实施例中第一方面所述的数据处理方法。
根据本发明实施例的第四方面,提供了一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现如上述实施例中第一方面所述的数据处理方法。
本发明实施例提供的技术方案可以包括以下有益效果:
在本发明的一些实施例所提供的技术方案中,通过每个线程的业务逻辑对每个线程的数据集进行处理,当处理结果显示所述数据集中存在数据异常时,按照预设规则对所述数据集进行拆分处理,得到所述数据集的异常数据,并对所述异常数据进行标注,这样可以准确快速的定位到数据集的异常数据,有效地避免了如果吞掉异常数据,则难保证数据的一致性,并且会对整个该队列批量提交的数据产生影响的缺陷。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本发明。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
图1示意性示出了根据本发明的一个实施例的数据处理方法的流程图;
图2示意性示出了根据本发明的另一个实施例的数据处理方法的流程图;
图3示意性示出了根据本发明的另一个实施例的数据处理方法的流程图;
图4示意性示出了根据本发明的另一个实施例的数据处理方法的流程图;
图5示意性示出了根据本发明的另一个实施例的数据处理方法的流程图;
图6示意性示出了根据本发明的另一个实施例的数据处理方法的流程图;
图7示意性示出了根据本发明的一个实施例的数据处理装置的框图;
图8示意性示出了根据本发明的另一个实施例的数据处理装置的框图;
图9示意性示出了根据本发明的另一个实施例的数据处理装置的框图;
图10示意性示出了根据本发明的另一个实施例的数据处理装置的框图;
图11示意性示出了根据本发明的另一个实施例的数据处理装置的框图;
图12示意性示出了根据本发明的另一个实施例的数据处理装置的框图;
图13示意性示出了根据本发明的另一个实施例的数据处理装置的框图;
图14示出了适于用来实现本发明实施例的电子设备的计算机系统的结构示意图。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本发明将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。
此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本发明的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本发明的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本发明的各方面。
附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
图1示意性示出了根据本发明的一个实施例的数据处理方法的流程图。
如图1所示,数据处理方法包括步骤S110~步骤S140。
在步骤S110中,获取线程池中每个线程的数据集。
在步骤S120中,根据所述每个线程的业务逻辑对所述每个线程的数据集进行处理。
在步骤S130中,当处理结果显示所述数据集中存在数据异常时,按照预设规则对所述数据集进行拆分处理,得到所述数据集的异常数据,并对所述异常数据进行标注。
在步骤S140中,按照预设的数据库操作类型将处理后的数据集的数据分别添加到相应的队列。
在该方法中,当线程池中的一个线程在处理数据集时的处理结果显示该数据集中存在数据异常时,按照预设规则对该数据集进行拆分处理,得到所述数据集的异常数据,并对异常数据进行标注,这样可以准确快速的定位到数据集的异常数据,还可以有效地避免如果吞掉异常数据,则很难保证数据的一致性,从而对整个队列批量提交的数据产生影响的缺陷。
在本发明的一个实施例中,上述方法还包括按照业务类型对所述线程池中的每个线程进行分类,以确保所述线程池中的多个线程之间在处理数据时相互独立。
在本发明的一个实施例中,上述数据集的数据可以是关系型数据。例如,关系型数据可以是以关系数学模型来表示的数据,关系数学模型中以二维表的形式来描述数据。
在本发明的一个实施例中,上述线程池可以是一种多线程处理形式,处理过程中可以将任务添加到队列,然后在创建线程后自动启动这些任务,这些可以包括对数据集进行处理的任务。该线程池可以包括预设阈值个线程,例如,预设阈值可以是10、20、30等等,具体可以根据实际情况设定预设阈值。
在本发明的一个实施例中,当线程池中的线程数目达到阈值时,可以选择停止向该线程池中添加线程,也可以选择将需要添加到该线程池的线程添加到线程等待队列。
在本发明的一个实施例中,上述业务逻辑可以与系统下发的任务种类相对应,这样可以根据任务种类调用相应的业务逻辑来处理数据集。例如,任务可以是更新数据集的数据、删除数据集的数据、插入数据集的数据等等,但不限于此。
在本发明的一个实施例中,上述预设规则可以是金字塔原则。例如,当线程的处理结果显示数据集中存在数据异常时,可以按照金字塔原则对数据集进行拆分。具体地,可以以2的倍数向下逐渐对数据集进行拆分,若不能被2整除,则将余数作为一个独立单元数据处理。在一次拆分完毕后,可以调用业务逻辑继续对拆分后的子数据集重新处理,若某个子数据集抛出异常,按照该方法再次拆分,直至定位到单条数据异常为止,这样可以准确快速的定位到数据集中异常的数据。金字塔原则一般默认为2倍数原则对抛出异常的数据集进行拆分,当然也可以以其他倍数对数据集进行拆分。
在本发明的一个实施例中,可以通过对异常数据进行标注来实现避免如果吞掉异常数据,则很难保证数据的一致性,从而对整个队列批量提交的数据产生影响的缺陷。
在本发明的一个实施例中,可以根据数据库操作类型设置数据集的队列,以实现批量提交数据。例如,可以设置三种队列:插入、更新和删除等队列,然后由计数器对该队列中的数目进行判断,待该队列中的数据量达到设定的阈值之后,批量将该队列中的数据提交到关系型数据库。但是,现有技术中的批量数据提交机制对关系型数据库的事务管理构成挑战,一条数据的异常会导致整个队列的数据提交失败。为了解决这一问题,上述方法采用对异常数据进行标注的方式来克服现有技术存在的问题。
图2示意性示出了根据本发明的另一个实施例的数据处理方法的流程图。
如图2所示,上述步骤130具体可以包括步骤S131~步骤S133。
在步骤S131中,当处理结果显示所述数据集中存在数据异常时,按照预设规则对所述数据集进行拆分,得到所述数据集的子数据集。
在步骤S132中,根据所述每个线程的业务逻辑对所述数据集的每个子数据集进行处理。
在步骤S133中,循环执行上述步骤S131和步骤S132直到定位到所述数据集的异常数据为止。
该方法可以通过循环执行上述步骤S131和步骤S132来从数据集中定位到异常数据,以此方式定位数据集中的异常数据可以有效地避免遗漏。
图3示意性示出了根据本发明的另一个实施例的数据处理方法的流程图。
如图3所示,在上述步骤S110之前,上述方法还包括步骤S210和步骤S220。
在步骤S210中,判断所述线程池中线程的数量是否大于预设阈值。
在步骤S220中,如果大于该预设阈值,则停止向所述线程池内添加新的线程。
该方法可以通过判断线程池中线程的数量是否大于预设阈值来确定是否可以向该线程池中添加新的线程。这样可以有效地避免因该线程池中的线程过多而导致系统运行不稳定的情况,甚至出现宕机情况。
在本发明的一个实施例中,上述线程池可以是spring boot中的异步线程池,利用该异步线程池可以结合实际的业务处理场景,采用各种业务类型的线程对系统的数据集进行处理。同时,可以配置异步线程池最大容纳的线程的数量,即预设阈值,也可以配置线程等待队列的阈值。例如,当异步线程池中的线程数目达到阈值时,可以选择停止向该异步线程池中添加线程,也可以选择将需要添加到该异步线程池的线程添加到线程等待队列。
图4示意性示出了根据本发明的另一个实施例的数据处理方法的流程图。
如图4所示,上述步骤S110具体可以包括步骤S111~步骤S113。
在步骤S111中,在多线程控制层分发线程时,判断所述线程池中是否存在与即将执行处理任务的线程类型相同的线程。
在步骤S112中,如果存在,且该线程处于运行状态时,按照预设时长校验该线程已处理数据量的变化。
在步骤S113中,根据校验结果,确定所述即将执行处理任务的线程的数据集。
在该方法中,在多线程控制层分发线程时,可以先判断线程池中是否存在与即将执行处理任务的线程类型相同的线程,如果存在,且该线程处于运行状态时,按照预设时长校验该线程已处理数据量的变化。例如,预设时长可以设定为5min,线程处理的数据集的数据量为500,此时按照预设时长校验该线程已处理数据量的变化具体可以是每隔5min校验已处理数据的数据量,如果校验结果显示已处理数据的数据量为500,则表明正在运行的线程的处理任务已经完成,在这种情况下,可以针对即将执行任务的线程获取新的数据集。但是,如果校验结果显示已处理数据的数据量为200,则表明正在运行的线程的处理任务没有完成,在这种情况下,即将执行任务的线程可以将上述与其同类型线程未处理的数据进行处理。以此方式分发线程可以有效地避免线程之间重复处理同一个数据集,这样有助于提升线程处理数据的效率。
在本发明的一个实施例中,由于服务器的不稳定性,运维人员的误操作导致批处理中断,如果重新发布应用程序进行补救性跑批成本较高、周期较长,并且同一条数据多次处理会造成业务数据的“噪声”。通过上述该方法可以在一天内设置了多个时间段进行跑批。这样可以防止数据的重复性处理,导致处理结果的异质,如果在下次跑批的时候在预设时长内进行校验已处理数据量的变化,时间尺度可以设置为5min。在判断数据量变化中,该方法可以选取“已处理数据量”作为判断依据,由于已处理数据量只会增加不可能减少(除非有人为因素介入,在该方法中忽略不计),符合单调递增函数特效,所以把已处理数据量作为批处理健壮性的判断依据,如果在5min内已处理的数据量有增加,则表示线程池正在运行,如果没有增加则默认为线程已死,发起新的线程进行数据的处理。这种机制可以增加的业务逻辑批处理的健壮性,降低运维成本。5min的时间尺度是根据实际的业务场景设置的,可以根据实际的业务场景和单位时间内的数据处理量来灵活设置。
图5示意性示出了根据本发明的另一个实施例的数据处理方法的流程图。
如图5所示,在步骤S140之前,上述方法还包括步骤310和步骤320。
在步骤S310中,判断所述队列中的数据量是否满足批量提交的条件。
在步骤S320中,如果满足批量提交的条件,则将所述队列的数据存储到关系型数据库。
该方法可以根据队列的数据量批量提交数据到关系型数据库。例如,批量提交条件可以设置为队列的数据量是否达到500,如果达到将该队列的数据存储到关系型数据库,以这样的方式对处理后的数据进行存储可以提升数据存储的效率。
在本发明的一个实施例中,可以根据数据库操作类型设置数据集的队列,以实现批量提交数据。例如,可以设置三种队列:插入、更新和删除等队列,然后由计数器对该队列中的数目进行判断,待该队列中的数据量达到设定的阈值之后,批量将该队列中的数据提交到关系型数据库。但是,现有技术中的批量数据提交机制对关系型数据库的事务管理构成挑战,一条数据的异常会导致整个队列的数据提交失败。为了解决这一问题,上述方法采用对异常数据进行标注的方式来克服现有技术存在的问题。
在本发明的一个实施例中,上述队列的数据量达到的阈值一般默认为500。当然,可以根据实际的应用场景对该阈值进行设置,以达到更好的效果。
图6示意性示出了根据本发明的另一个实施例的数据处理方法的流程图。
如图6所示,在步骤S120之后,上述方法还包括步骤410和步骤420。
在步骤S410中,利用回调函数获取所述线程池中每个线程的处理结果和/或相关信息。
在步骤S420中,将所述每个线程的处理结果和/或相关信息存储到日志数据库。
该方法可以通过回调函数获取线程池中每个线程的处理结果和/或相关信息,并将每个线程的处理结果和/或相关信息存储到日志数据库,这样有助于运维人员了解每个线程执行处理任务的详情,便于日后进行优化。
在本发明的一个实施例中,上述每个线程的处理结果可以指异常或正常。例如,该线程在处理数据集时发现该数据集中存在异常数据,在这种情况下,可以将该线程的处理结果标注为异常。反之,可以标注为正常。
例如,可以通过上述方法快速的定位到该数据集的异常数据。具体地,当线程池中的一个线程在处理数据集时的处理结果显示该数据集中存在数据异常时,按照预设规则对该数据集进行拆分,然后继续根据该线程的业务逻辑对该数据集的子数据集进行处理,以此方式循环执行拆分操作和处理操作直到定位到该数据集的异常数据为止,并对异常数据进行标注,这样可以准确快速的定位到数据集的异常数据,还可以有效地避免如果吞掉异常数据,则很难保证数据的一致性,从而对整个队列批量提交的数据产生影响的缺陷
在本发明的一个实施例中,上述每个线程的相关信息可以是该线程处理数据集所用的时长,也可以是该线程处理数据集的数据量的值等等,但不限于此。
图7示意性示出了根据本发明的一个实施例的数据处理装置的框图。
如图7所示,数据处理装置500包括第一获取模块510、第一处理模块520、拆分处理模块530和添加模块540。
具体地,第一获取模块510,用于获取线程池中每个线程的数据集。
第一处理模块520,用于根据所述每个线程的业务逻辑对所述每个线程的数据集进行处理。
拆分处理530,当处理结果显示所述数据集中存在数据异常时,按照预设规则对所述数据集进行拆分处理,得到所述数据集的异常数据,并对所述异常数据进行标注。
添加模块540,用于按照预设的数据库操作类型将处理后的数据集的数据分别添加到相应的队列。
在该数据处理装置500中,当线程池中的一个线程在处理数据集时的处理结果显示该数据集中存在数据异常时,按照预设规则对该数据集进行拆分处理,得到数据集的异常数据,这样可以有效地避免如果吞掉异常数据,则很难保证数据的一致性,从而对整个队列批量提交的数据产生影响的缺陷。
根据本发明的实施例,该数据处理装置500可以用于实现图1实施例描述的数据处理方法。
图8示意性示出了根据本发明的另一个实施例的数据处理装置的框图。
如图8所示,上述拆分处理模块530包括拆分模块531、第二处理模块532和循环模块533。
具体地,拆分模块531,当处理结果显示所述数据集中存在数据异常时,按照预设规则对所述数据集进行拆分,得到所述数据集的子数据集。
第二处理模块532,根据所述每个线程的业务逻辑对所述数据集的每个子数据集进行处理。
循环模块533,用于循环执行上述两个模块直到定位到所述数据集的异常数据为止。
该拆分处理模块530可以通过循环执行上述拆分模块531和第二处理模块532来从数据集中定位到异常数据,以此方式定位数据集中的异常数据可以有效地避免遗漏。
根据本发明的实施例,该拆分处理模块530可以用于实现图2实施例描述的数据处理方法。
图9示意性示出了根据本发明的另一个实施例的数据处理装置的框图。
如图9所示,除了图7实施例描述的第一获取模块510、第一处理模块520、拆分处理模块530和添加模块540之外,数据处理装置600还包括:第一判断模块610和停止模块620。
具体地,第一判断模块610,用于判断所述线程池中线程的数量是否大于预设阈值。
停止模块620,如果大于,则停止向所述线程池内添加新的线程。
该数据处理装置600可以通过判断线程池中线程的数量是否大于预设阈值来确定是否可以向该线程池中添加新的线程。这样可以有效地避免因该线程池中的线程过多而导致系统运行不稳定的情况,甚至出现宕机情况。
根据本发明的实施例,该数据处理装置600可以用于实现图3实施例描述的数据处理方法。
图10示意性示出了根据本发明的另一个实施例的数据处理装置的框图。
如图10所示,除了图7实施例描述的第一获取模块510、第一处理模块520、拆分处理模块530和添加模块540之外,数据处理装置700还包括分类模块710。
具体地,分类模块710,用于按照业务类型对所述线程池中的每个线程进行分类,以确保所述线程池中的多个线程之间在处理数据时相互独立。
该数据处理装置700可以确保所述线程池中的多个线程之间在处理数据时相互独立。
图11示意性示出了根据本发明的另一个实施例的数据处理装置的框图。
如图11所示,上述第一获取模块510具体可以包括第二判断模块511、校验模块512和确定模块513。
具体地,第二判断模块511,在多线程控制层分发线程时,判断所述线程池中是否存在与即将执行处理任务的线程类型相同的线程。
校验模块512,如果存在,且该线程处于运行状态时,按照预设时长校验该线程已处理数据量的变化。
确定模块513,用于根据校验结果,确定所述即将执行处理任务的线程的数据集。
在该第一获取模块510中,在多线程控制层分发线程时,可以先判断线程池中是否存在与即将执行处理任务的线程类型相同的线程,如果存在,且该线程处于运行状态时,按照预设时长校验该线程已处理数据量的变化。例如,预设时长可以设定为5min,线程处理的数据集的数据量为500,此时按照预设时长校验该线程已处理数据量的变化具体可以是每隔5min校验已处理数据的数据量,如果校验结果显示已处理数据的数据量为500,则表明正在运行的线程的处理任务已经完成,在这种情况下,可以针对即将执行任务的线程获取新的数据集。但是,如果校验结果显示已处理数据的数据量为200,则表明正在运行的线程的处理任务没有完成,在这种情况下,即将执行任务的线程可以将上述与其同类型线程未处理的数据进行处理。以此方式分发线程可以有效地避免线程之间重复处理同一个数据集,这样有助于提升线程处理数据的效率。
根据本发明的实施例,该第一获取模块510可以用于实现图4实施例描述的数据处理方法。
图12示意性示出了根据本发明的另一个实施例的数据处理装置的框图。
如图12所示,除了图7实施例描述的第一获取模块510、第一处理模块520、拆分处理模块530和添加模块540之外,数据处理装置800还包括第三判断模块810和第一存储模块820。
具体地,第三判断模块810,用于判断所述队列中的数据量是否满足批量提交的条件。
第一存储模块820,如果满足,则将所述队列的数据存储到关系型数据库。
该数据处理装置800以根据队列的数据量批量提交数据到关系型数据库。例如,批量提交条件可以设置为队列的数据量是否达到500,如果达到将该队列的数据存储到关系型数据库,以这样的方式对处理后的数据进行存储可以提升数据存储的效率。
根据本发明的实施例,该数据处理装置800可以用于实现图5实施例描述的数据处理方法。
图13示意性示出了根据本发明的另一个实施例的数据处理装置的框图。
如图13所示,除了图7实施例描述的第一获取模块510、第一处理模块520、拆分处理模块530和添加模块540之外,数据处理装置900还包括第二获取模块910和第二存储模块920。
具体地,第二获取模块910,利用回调函数获取所述线程池中每个线程的处理结果和/或相关信息。
第二存储模块920,用于将所述每个线程的处理结果和/或相关信息存储到日志数据库。
该数据处理装置900通过回调函数获取线程池中每个线程的处理结果和/或相关信息,并将每个线程的处理结果和/或相关信息存储到日志数据库,这样有助于运维人员了解每个线程执行处理任务的详情,便于日后进行优化。
根据本发明的实施例,该数据处理装置900可以用于实现图6实施例描述的数据处理方法。
可以理解的是,第一获取模块510、第一处理模块520、拆分处理模块530、拆分模块531、第二处理模块532、循环模块533、添加模块540、第一判断模块610、停止模块620、分类模块710、第三判断模块810、第一存储模块820、第二获取模块910、以及第二存储模块920可以合并在一个模块中实现,或者其中的任意一个模块可以被拆分成多个模块。或者,这些模块中的一个或多个模块的至少部分功能可以与其他模块的至少部分功能相结合,并在一个模块中实现。根据本发明的实施例,第一获取模块510、第一处理模块520、拆分处理模块530、拆分模块531、第二处理模块532、循环模块533、添加模块540、第一判断模块610、停止模块620、分类模块710、第三判断模块810、第一存储模块820、第二获取模块910、以及第二存储模块920中的至少一个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、片上系统、基板上的系统、封装上的系统、专用集成电路(ASIC),或可以以对电路进行集成或封装的任何其他的合理方式等硬件或固件来实现,或以软件、硬件以及固件三种实现方式的适当组合来实现。或者,第一获取模块510、第一处理模块520、拆分处理模块530、拆分模块531、第二处理模块532、循环模块533、添加模块540、第一判断模块610、停止模块620、分类模块710、第三判断模块810、第一存储模块820、第二获取模块910、以及第二存储模块920中的至少一个可以至少被部分地实现为计算机程序模块,当该程序被计算机运行时,可以执行相应模块的功能。
下面参考图14,其示出了适于用来实现本发明实施例的电子设备的计算机系统1000的结构示意图。图14示出的电子设备的计算机系统1000仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图14所示,计算机系统1000包括中央处理单元(CPU)1001,其可以根据存储在只读存储器(ROM)1002中的程序或者从存储部分1008加载到随机访问存储器(RAM)1003中的程序而执行各种适当的动作和处理。在RAM 1003中,还存储有系统操作所需的各种程序和数据。CPU 1001、ROM 1002以及RAM 1003通过总线1004彼此相连。输入/输出(I/O)接口1005也连接至总线1004。
以下部件连接至I/O接口1005:包括键盘、鼠标等的输入部分1006;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分1007;包括硬盘等的存储部分1008;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分1009。通信部分1009经由诸如因特网的网络执行通信处理。驱动器1010也根据需要连接至I/O接口1005。可拆卸介质1011,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器1010上,以便于从其上读出的计算机程序根据需要被安装入存储部分1008。
特别地,根据本发明的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分1009从网络上被下载和安装,和/或从可拆卸介质1011被安装。在该计算机程序被中央处理单元(CPU)1001执行时,执行本申请的系统中限定的上述功能。
需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本发明中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本发明实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现,所描述的单元也可以设置在处理器中。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定。
作为另一方面,本申请还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该电子设备执行时,使得该电子设备实现如上述实施例中所述的数据处理方法。
例如,所述的电子设备可以实现如图1中所示的:在步骤S110中,获取线程池中每个线程的数据集;在步骤S120中,根据所述每个线程的业务逻辑对所述每个线程的数据集进行处理;在步骤S130中,当处理结果显示所述数据集中存在数据异常时,按照预设规则对所述数据集进行拆分处理,得到所述数据集的异常数据,并对所述异常数据进行标注;在步骤S140中,按照预设的数据库操作类型将处理后的数据集的数据分别添加到相应的队列。
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本发明的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本发明实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、触控终端、或者网络设备等)执行根据本发明实施方式的方法。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本发明的其它实施方案。本申请旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本发明未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由下面的权利要求指出。
应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求来限制。
Claims (11)
1.一种数据处理方法,其特征在于,该方法包括:
获取线程池中每个线程的数据集;
根据所述每个线程的业务逻辑对所述每个线程的数据集进行处理;
当处理结果显示所述数据集中存在数据异常时,按照预设规则对所述数据集进行拆分处理,得到所述数据集的异常数据,并对所述异常数据进行标注;
按照预设的数据库操作类型将处理后的数据集的数据分别添加到相应的队列。
2.根据权利要求1所述的方法,其特征在于,当处理结果显示所述数据集中存在数据异常时,按照预设规则对所述数据集进行拆分处理,得到所述数据集的异常数据包括:
当处理结果显示所述数据集中存在数据异常时,按照预设规则对所述数据集进行拆分,得到所述数据集的子数据集;
根据所述每个线程的业务逻辑对所述数据集的每个子数据集进行处理;
循环执行上述两个步骤直到定位到所述数据集的异常数据为止。
3.根据权利要求1所述的方法,其特征在于,在获取线程池中每个线程的数据集之前,该方法还包括:
判断所述线程池中线程的数量是否大于预设阈值;
如果大于,则停止向所述线程池内添加新的线程。
4.根据权利要求1所述的方法,其特征在于,该方法还包括:
按照业务类型对所述线程池中的每个线程进行分类,以确保所述线程池中的多个线程之间在处理数据时相互独立。
5.根据权利要求4所述的方法,其特征在于,所述获取线程池中每个线程的数据集包括:
在多线程控制层分发线程时,判断所述线程池中是否存在与即将执行处理任务的线程类型相同的线程;
如果存在,且该线程处于运行状态时,按照预设时长校验该线程已处理数据量的变化;
根据校验结果,确定所述即将执行处理任务的线程的数据集。
6.根据权利要求1所述的方法,其特征在于,在按照预设的数据库操作类型将处理后的数据集的数据分别添加到相应的队列之前,该方法还包括:
判断所述队列中的数据量是否满足批量提交的条件;
如果满足,则将所述队列的数据存储到关系型数据库。
7.根据权利要求1所述的方法,其特征在于,在根据所述每个线程的业务逻辑对所述每个线程的数据集进行处理之后,该方法还包括:
利用回调函数获取所述线程池中每个线程的处理结果和/或相关信息;
将所述每个线程的处理结果和/或相关信息存储到日志数据库。
8.根据权利要求1所述的方法,其特征在于,所述预设规则包括金字塔原则。
9.一种数据处理装置,其特征在于,该方法包括:
第一获取模块,用于获取线程池中每个线程的数据集;
第一处理模块,用于根据所述每个线程的业务逻辑对所述每个线程的数据集进行处理;
拆分处理模块,当处理结果显示所述数据集中存在数据异常时,按照预设规则对所述数据集进行拆分处理,得到所述数据集的异常数据,并对所述异常数据进行标注;
添加模块,用于按照预设的数据库操作类型将处理后的数据集的数据分别添加到相应的队列。
10.一种电子设备,包括:
一个或多个处理器;以及
存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现根据权利要求1~7任意一项所述的方法。
11.一种计算机可读介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现根据权利要求1~7中任意一项所述方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811554686.3A CN109710624B (zh) | 2018-12-19 | 2018-12-19 | 数据处理方法、装置、介质及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811554686.3A CN109710624B (zh) | 2018-12-19 | 2018-12-19 | 数据处理方法、装置、介质及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109710624A true CN109710624A (zh) | 2019-05-03 |
CN109710624B CN109710624B (zh) | 2021-06-11 |
Family
ID=66255852
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811554686.3A Active CN109710624B (zh) | 2018-12-19 | 2018-12-19 | 数据处理方法、装置、介质及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109710624B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110134578A (zh) * | 2019-05-23 | 2019-08-16 | 浙江齐治科技股份有限公司 | 一种数据处理方法及装置 |
CN110147373A (zh) * | 2019-05-23 | 2019-08-20 | 泰康保险集团股份有限公司 | 数据处理方法、装置以及电子设备 |
CN110750531A (zh) * | 2019-09-16 | 2020-02-04 | 深圳市元征科技股份有限公司 | 一种数据处理方法及相关设备 |
CN111159206A (zh) * | 2019-12-04 | 2020-05-15 | 北京奇虎科技有限公司 | 设备信息数据库的更新方法、设备及计算机可读存储介质 |
CN112231329A (zh) * | 2020-10-14 | 2021-01-15 | 北京人大金仓信息技术股份有限公司 | 向数据库插入数据的方法、装置、设备和可读存储介质 |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020138559A1 (en) * | 2001-01-29 | 2002-09-26 | Ulrich Thomas R. | Dynamically distributed file system |
US20020169827A1 (en) * | 2001-01-29 | 2002-11-14 | Ulrich Thomas R. | Hot adding file system processors |
CN101882165A (zh) * | 2010-08-02 | 2010-11-10 | 山东中创软件工程股份有限公司 | 基于etl的多线程数据处理方法 |
CN102096686A (zh) * | 2009-12-09 | 2011-06-15 | 中兴通讯股份有限公司 | 一种数据合法性检查方法及装置 |
CN102117493A (zh) * | 2009-12-30 | 2011-07-06 | 新奥特(北京)视频技术有限公司 | 一种三维建模中数据更新的方法及装置 |
CN102117495A (zh) * | 2009-12-30 | 2011-07-06 | 新奥特(北京)视频技术有限公司 | 一种三维建模中的新数据分割方法及装置 |
US20140281810A1 (en) * | 2013-03-15 | 2014-09-18 | Silicon Space Technology Corporation | Memory circuit incorporating error detection and correction (edac), method of operation, and system |
US20150089280A1 (en) * | 2013-09-26 | 2015-03-26 | Raanan Sade | Recovery from multiple data errors |
US20160103845A1 (en) * | 2014-10-09 | 2016-04-14 | Robin Systems, Inc. | Enhanced Handling Of Intermediate Data Generated During Distributed, Parallel Processing |
CN105740418A (zh) * | 2016-01-29 | 2016-07-06 | 杭州亿方云网络科技有限公司 | 一种基于文件监控和消息推送的实时同步系统 |
CN105978949A (zh) * | 2016-04-27 | 2016-09-28 | 乐视控股(北京)有限公司 | 离线数据上传方法及装置 |
CN108280148A (zh) * | 2018-01-02 | 2018-07-13 | 中国民生银行股份有限公司 | 一种数据迁移方法和数据迁移服务器 |
-
2018
- 2018-12-19 CN CN201811554686.3A patent/CN109710624B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020138559A1 (en) * | 2001-01-29 | 2002-09-26 | Ulrich Thomas R. | Dynamically distributed file system |
US20020169827A1 (en) * | 2001-01-29 | 2002-11-14 | Ulrich Thomas R. | Hot adding file system processors |
CN102096686A (zh) * | 2009-12-09 | 2011-06-15 | 中兴通讯股份有限公司 | 一种数据合法性检查方法及装置 |
CN102117493A (zh) * | 2009-12-30 | 2011-07-06 | 新奥特(北京)视频技术有限公司 | 一种三维建模中数据更新的方法及装置 |
CN102117495A (zh) * | 2009-12-30 | 2011-07-06 | 新奥特(北京)视频技术有限公司 | 一种三维建模中的新数据分割方法及装置 |
CN101882165A (zh) * | 2010-08-02 | 2010-11-10 | 山东中创软件工程股份有限公司 | 基于etl的多线程数据处理方法 |
US20140281810A1 (en) * | 2013-03-15 | 2014-09-18 | Silicon Space Technology Corporation | Memory circuit incorporating error detection and correction (edac), method of operation, and system |
US20150089280A1 (en) * | 2013-09-26 | 2015-03-26 | Raanan Sade | Recovery from multiple data errors |
US20160103845A1 (en) * | 2014-10-09 | 2016-04-14 | Robin Systems, Inc. | Enhanced Handling Of Intermediate Data Generated During Distributed, Parallel Processing |
CN105740418A (zh) * | 2016-01-29 | 2016-07-06 | 杭州亿方云网络科技有限公司 | 一种基于文件监控和消息推送的实时同步系统 |
CN105978949A (zh) * | 2016-04-27 | 2016-09-28 | 乐视控股(北京)有限公司 | 离线数据上传方法及装置 |
CN108280148A (zh) * | 2018-01-02 | 2018-07-13 | 中国民生银行股份有限公司 | 一种数据迁移方法和数据迁移服务器 |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110134578A (zh) * | 2019-05-23 | 2019-08-16 | 浙江齐治科技股份有限公司 | 一种数据处理方法及装置 |
CN110147373A (zh) * | 2019-05-23 | 2019-08-20 | 泰康保险集团股份有限公司 | 数据处理方法、装置以及电子设备 |
CN110147373B (zh) * | 2019-05-23 | 2021-06-22 | 泰康保险集团股份有限公司 | 数据处理方法、装置以及电子设备 |
CN110750531A (zh) * | 2019-09-16 | 2020-02-04 | 深圳市元征科技股份有限公司 | 一种数据处理方法及相关设备 |
CN110750531B (zh) * | 2019-09-16 | 2023-09-08 | 深圳市元征科技股份有限公司 | 一种数据处理方法及相关设备 |
CN111159206A (zh) * | 2019-12-04 | 2020-05-15 | 北京奇虎科技有限公司 | 设备信息数据库的更新方法、设备及计算机可读存储介质 |
CN112231329A (zh) * | 2020-10-14 | 2021-01-15 | 北京人大金仓信息技术股份有限公司 | 向数据库插入数据的方法、装置、设备和可读存储介质 |
CN112231329B (zh) * | 2020-10-14 | 2024-04-26 | 北京人大金仓信息技术股份有限公司 | 向数据库插入数据的方法、装置、设备和可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN109710624B (zh) | 2021-06-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109710624A (zh) | 数据处理方法、装置、介质及电子设备 | |
CN107885762B (zh) | 智能大数据系统、提供智能大数据服务的方法和设备 | |
US9886670B2 (en) | Feature processing recipes for machine learning | |
US20150379424A1 (en) | Machine learning service | |
US8924977B2 (en) | Sequential cooperation between map and reduce phases to improve data locality | |
US9483319B2 (en) | Job scheduling apparatus and method therefor | |
US9396028B2 (en) | Scheduling workloads and making provision decisions of computer resources in a computing environment | |
US20120042319A1 (en) | Scheduling Parallel Data Tasks | |
CN106663021A (zh) | 虚拟化环境中的智能gpu调度 | |
US20140068621A1 (en) | Dynamic storage-aware job scheduling | |
CN110096344A (zh) | 任务管理方法、系统、服务器集群和计算机可读介质 | |
US20160335105A1 (en) | Performing server migration and dependent server discovery in parallel | |
CN102567090B (zh) | 在计算机处理器中创建执行线程的方法和系统 | |
US10430577B2 (en) | Method and apparatus for inter process privilige transfer | |
CN108958881A (zh) | 数据处理方法、装置及计算机可读存储介质 | |
CN105378668B (zh) | 多处理器系统中的操作系统管理的中断引导 | |
US20200044938A1 (en) | Allocation of Shared Computing Resources Using a Classifier Chain | |
CN109933422A (zh) | 处理任务的方法、装置、介质及电子设备 | |
CN109308212A (zh) | 一种任务处理方法、任务处理器及任务处理设备 | |
US20160132357A1 (en) | Data staging management system | |
CN107368324A (zh) | 一种组件升级方法、装置和系统 | |
US12118392B2 (en) | Techniques for execution orchestration with topological dependency relationships | |
WO2021143055A1 (zh) | 智能化的数据优化方法、装置、电子设备及存储介质 | |
CN109597810A (zh) | 一种任务切分方法、装置、介质及电子设备 | |
CN114327894A (zh) | 资源分配方法、装置、电子设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |