CN111625505A - 一种文件拆分方法及装置 - Google Patents
一种文件拆分方法及装置 Download PDFInfo
- Publication number
- CN111625505A CN111625505A CN202010452379.5A CN202010452379A CN111625505A CN 111625505 A CN111625505 A CN 111625505A CN 202010452379 A CN202010452379 A CN 202010452379A CN 111625505 A CN111625505 A CN 111625505A
- Authority
- CN
- China
- Prior art keywords
- file
- classification
- split
- server
- classified
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/16—File or folder operations, e.g. details of user interfaces specifically adapted to file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/176—Support for shared access to files; File sharing support
- G06F16/1767—Concurrency control, e.g. optimistic or pessimistic approaches
- G06F16/1774—Locking methods, e.g. locking methods for file systems allowing shared and concurrent access to files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/24—Classification techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
- G06F9/4451—User profiles; Roaming
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Databases & Information Systems (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Evolutionary Computation (AREA)
- Evolutionary Biology (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Bioinformatics & Computational Biology (AREA)
- Artificial Intelligence (AREA)
- Human Computer Interaction (AREA)
- Life Sciences & Earth Sciences (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例提供一种文件拆分方法及装置,适用于分布式集群;所述分布式集群中的多个服务器用于执行各自的拆分任务;所述方法包括:针对所述多个服务器中的任一服务器,所述服务器根据拆分任务中的分片位置从待拆分文件中获取待拆分分片;所述服务器根据文件处理配置中的业务逻辑,确定所述待拆分分片中每行数据对应的分类并记录到所述分类的局部变量中;所述服务器根据所述文件处理配置中的分类存储信息,将各分类的局部变量以加锁方式写入各分类文件中。采用上述方法,可以加快文件的拆分速度,减少时间成本和人力成本。
Description
技术领域
本发明涉及大数据技术领域,特别涉及一种文件拆分方法及装置。
背景技术
随着计算机技术的发展,越来越多的技术应用在金融领域,传统金融业正在逐步向金融科技(Finteh)转变,但由于金融行业的安全性、实时性要求,也对技术提出更高的要求。近年来,通过对计算机技术的应用,使得金融行业的发展日新月异,而正是因为金融行业的迅猛发展,金融相关数据呈井喷式增加,使得相应的计算机技术难于支撑金融行业的后续发展。
现有技术中,通过在一台服务器上设置业务逻辑和运行该业务逻辑的相关逻辑;就可以实现通过运行该业务逻辑,得到需要的数据。例如,用户需要将一份客户理财信息文件中的上海客户、北京客户、广州客户拆分,则可以在一台服务器上编写针对上海客户、北京客户、广州客户分类的文件拆分的业务逻辑,和运行该业务逻辑的相关逻辑;通过运行该业务逻辑就可以将该文件拆分为需要的各分类文件。相比于传统的手动拆分,节省了大量的人力物力。但随着理财观念的普及,理财人群的基数增加,该方式已经无法满足用户的需求。
因此,现在亟需一种文件拆分方法及装置,可以加快文件的拆分速度,减少时间成本和人力成本。
发明内容
本发明实施例提供一种文件拆分方法及装置,可以加快文件的拆分速度,减少时间成本和人力成本。
第一方面,本发明实施例提供一种文件拆分方法,适用于分布式集群;所述分布式集群中的多个服务器用于执行各自的拆分任务;所述方法包括:针对所述多个服务器中的任一服务器,所述服务器根据拆分任务中的分片位置从待拆分文件中获取待拆分分片;所述服务器根据文件处理配置中的业务逻辑,确定所述待拆分分片中每行数据对应的分类并记录到所述分类的局部变量中;所述服务器根据所述文件处理配置中的分类存储信息,将各分类的局部变量以加锁方式写入各分类文件中。
采用上述方法,在分布式集群的多个服务器,各自根据拆分任务中的分片位置获取待拆分文件中的相应的待拆分分片;如此,可以使得该分布式集群中的多个服务器分别拆分该待拆分文件的各待拆分分片,实现多线程对待拆分文件进行拆分处理,加快待拆分文件的拆分速度。根据文件处理配置中的业务逻辑对该待拆分分片进行拆分;如此,业务逻辑可以由用户自行输入,可以增加拆分方式的灵活性、多变性。将待拆分分片中的每行数据分别记录到该行数据所属分类的局部变量中;如此,设置局部变量,可以通过内存映射的方式获取待拆分分片,使得集群中的各个服务器中始终只有正在进行拆分的待拆分分片的内容,而不需要将待拆分文件或该服务器拆分的所有待拆分分片存储,减少资源占用,保证该服务器的性能一直处于良好状态;且设置局部变量,则不需要针对各分类再生成文件,减少该服务器的工作量,进一步保证该服务器的性能。服务器根据文件处理配置中的分类存储信息,将局部变量写入对应的各分类文件中;如此,由于文件处理配置中的分类存储信息可以由用户自行输入,因此,使得分类的信息可以依照用户的需求随时调整,增加分类的灵活性。
在一种可能的设计中,记录到所述分类的局部变量中之前,还包括:
所述服务器根据所述文件处理配置中的各分类组装规则,获取每行数据对应的组装数据,并按照所述业务逻辑进行组装。
采用上述方法,通过在文件处理装置中设置各分类组装规则,使得服务器可以根据该各分类组装规则,获取每行数据对应的组装数据,进一步根据业务逻辑将待拆分分片的内容与组装数据组装,得到待拆分文件与组装数据的组合文件。如此,在分类的同时,还可以在待拆分文件中加入用户需要增加的内容,而不需要用户手动将待拆分文件与组装数据组装,实现在拆分待拆分文件的同时,增加文件内容;加快文件处理速度,节省时间和人力成本。
在一种可能的设计中,将各分类的局部变量以加锁方式写入各分类文件中,包括:针对任一分类的局部变量,所述服务器在Redis服务器中获取所述分类的写入锁;所述服务器将所述分类的局部变量写入对应的分类文件夹;所述服务器在Redis服务器中释放所述分类的写入锁。
采用上述方法,对于任一分类的局部变量写入各分类文件中时,该服务器会在Redis服务器中获取该分类对应的写入锁,再将该分类的局部变量写入对应的分类文件夹。如此,可以保证对于一个分类文件夹,总是只有该分布式集群中的一个服务器进行写入操作,防止因为多服务器同时写入同一个分类文件夹,而使得文件中的写入内容混乱,造成待拆分文件中的内容丢失,保证写入内容的准确性。最后,当写入完成后在Redis服务器中释放该分类的写入锁,保证其他服务器可以将该分类对应的内容写入该分类文件中。
在一种可能的设计中,所述服务器根据拆分任务中的分片位置从待拆分文件中获取待拆分分片,包括:所述服务器确定所述待拆分分片的读取属性;所述读取属性为整片读取或设定大小读取;所述服务器按照所述读取属性,根据拆分任务中的分片位置从待拆分文件中获取待拆分分片。
采用上述方法,服务器可以根据待拆分分片的读取属性确定该待拆分分片为整片读取或设定大小读取。如此,可以保证服务器在待拆分分片的读取属性为整片读取时,根据拆分任务中的分片位置从待拆分文件中获取整个待拆分分片,保证待拆分分片内容的完整性。服务器在待拆分分片的读取属性为设定大小读取时,根据拆分任务中的分片位置从待拆分文件中获取设定大小待拆分分片,使得服务器中的资源占用率尽可能最小,保证服务器的运行性能,加快拆分速度的同时还能保证待拆分分片内容的完整性。
在一种可能的设计中,所述读取属性为设定大小读取,包括:
所述设定大小可以通过如下公式确定:
V=MIN(V,G/R)
其中,V为所述设定大小;G每次读取最大内容,所述G由历史经验值和所述服务器的性能确定;R每行内容大小。
采用上述方法,依据历史经验值和服务器的性能确定的每次可读取最大内容,和每行内容大小,通过比值确定每次最大可获取数据的行数,并在设定大小与每次最大可获取数据的行数中确定一个最小值;如此,可以保证每次按照最小的行数获取待拆分分片的内容,保证服务器的性能始终处在最优状态,加快服务器的处理速度。
在一种可能的设计中,所述方法包括:所述各分类文件存储在各数据中心;将各分类的局部变量以加锁方式写入各分类文件中之后,还包括:数据中心将所述数据中心的分类文件进行分片,采用堆排序的方法对各分片进行排序,得到排序后的分类文件。
采用上述方法,通过在数据中心将分类文件进行分类并排序,可以快速得到相应排序规则的有序的分类文件,增加分类文件的有序性。
在一种可能的设计中,将各分类的局部变量以加锁方式写入各分类文件中之前,还包括:所述服务器根据所述文件处理配置打开所述各分类文件;将各分类的局部变量以加锁方式写入各分类文件中之后,还包括:所述服务器在确定所有分类文件已完成写入后,根据所述文件处理配置关闭所述各分类文件;所述文件处理配置为在预设模板上进行编写得到的;所述预设模板设置有打开文件、读取文件及关闭文件的功能代码。
采用上述方法,由于预设模板中设置了打开文件、读取文件及关闭文件的功能代码。因此,无需用户另外编写相应的功能代码,减少用户的工作量以及时间成本。另外,由于该部分的功能代码的复杂性,本申请通过这种方法,不仅可以降低用户的工作量和时间成本;还可以消除由于用户编写打开文件或读取文件的功能代码出现失误而导致文件被破坏的情况。还可以消除由于用户忘记编写或编写错误关闭文件的功能代码,而使得待处理文件一直占用服务器资源的情况。
第二方面,本发明实施例提供一种文件拆分装置,适用于分布式集群;所述分布式集群中的多个服务器用于执行各自的拆分任务;所述装置包括:
获取模块,针对所述多个服务器中的任一服务器,用于根据拆分任务中的分片位置从待拆分文件中获取待拆分分片;
处理模块,用于根据文件处理配置中的业务逻辑,确定所述待拆分分片中每行数据对应的分类并记录到所述分类的局部变量中;
所述处理模块还用于,根据所述文件处理配置中的分类存储信息,将各分类的局部变量以加锁方式写入各分类文件中。
第三方面,本发明实施例还提供一种计算设备,包括:存储器,用于存储程序指令;处理器,用于调用所述存储器中存储的程序指令,按照获得的程序执行如第一方面的各种可能的设计中所述的方法。
第四方面,本发明实施例还提供一种计算机可读非易失性存储介质,包括计算机可读指令,当计算机读取并执行所述计算机可读指令时,使得计算机执行如第一方面的各种可能的设计中所述的方法。
本发明的这些实现方式或其他实现方式在以下实施例的描述中会更加简明易懂。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种文件拆分方法的架构示意图;
图2为本发明实施例提供的一种文件拆分方法的流程示意图;
图3为本发明实施例提供的一种文件拆分方法的流程示意图;
图4为本发明实施例提供的一种文件拆分装置示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
图1为本发明实施例提供的一种文件拆分的系统架构,适用于分布式集群;分布式集群中的多个服务器用于执行各自的拆分任务。如图1中的服务器集群103可以用于对待拆分文件进行拆分、服务器集群105可以用于存储该待拆分文件拆分后的各分类文件、服务器集群106可以用于存储一种分类的分类文件、服务器101可以为存储待拆分文件的服务器、服务器104可以为Redis服务器。为了便于描述,这里将服务器集群103称为拆分服务器集群、服务器集群105称为数据中心集群、服务器101称为文件服务器、服务器104称为Redis服务器。如此,拆分服务器集群103在从文件服务器101中获取待拆分文件后,由拆分服务器集群103中的任意一个拆分服务器将该待拆分服务器分片,并生成各拆分任务,使得拆分服务器集群103中的各个拆分服务器可以根据各拆分任务获取待拆分分片,并将待拆分分片进行拆分,得到各分类的局部变量;进一步将各分类的局部变量分别写入到数据中心集群105中的对应分类的数据中心集群106中,后续可以由数据中心集群105中的各分类的数据中心集群106对各分类文件进行进一步处理。上述过程中,待拆分服务器集群103也可以在本地获取待拆分文件,待拆分文件的获取方式具体不做限定。数据中心集群106为至少一台数据中心服务器。Redis服务器104可以用于存储各拆分任务,以便于拆分服务器集群103中的各个拆分服务器可以根据各拆分任务获取待拆分分片;由于Redis服务器的高并发可用性和原子性,可以保证待拆分文件的拆分速度、准确性和拆分过程的完整性。
基于此,本发明实施例提供了一种文件拆分方法的流程,如图2所示,包括:
步骤201、针对所述多个服务器中的任一服务器,所述服务器根据拆分任务中的分片位置从待拆分文件中获取待拆分分片;
此处,如图1中架构,针对拆分服务器集群103中的任意一个拆分服务器,该拆分服务器根据拆分任务中的分片位置从文件服务器101或拆分服务器集群103中的任意一个或多个拆分服务器本地的待拆分文件中获取待拆分分片。例如,该拆分服务器获取的拆分任务中的分片位置中记录待拆分分片的开始位置为该待拆分文件的第501个字节,结束位置为该待拆分文件的第600个字节;则该拆分服务器获取该待拆分文件的第501-600个字节。
步骤202、所述服务器根据文件处理配置中的业务逻辑,确定所述待拆分分片中每行数据对应的分类并记录到所述分类的局部变量中;
此处,在上一个示例中,若待拆分文件中包含上海客户、北京客户、广州客户的理财信息,则拆分服务器在获取到对应拆分任务的待拆分分片,即,该待拆分文件的第501-600个字节后;根据文件处理配置中的业务逻辑,将这第501-600个字节对应的每行数据中属于上海客户的行数据记录在上海客户的局部变量中,属于北京客户的行数据记录在北京客户的局部变量中,属于广州客户的行数据记录在广州客户的局部变量中。
这里的文件处理配置中还可以设置一个数据中心列表信息,如图1中每个数据中心集群106对应一种分类文件。在该数据中心列表信息中再分别为每种分类文件对应的数据中心集群创建一个配置文件,即,创建一个上下文信息context,context可以以key、value的格式存放,将为每个数据中心集群创建的分类文件信息放入到上下文中,key为数据中心集群标识,value为分类文件信息。
步骤203、所述服务器根据所述文件处理配置中的分类存储信息,将各分类的局部变量以加锁方式写入各分类文件中。
此处,分类存储信息可以为步骤202中数据中心列表信息中针对每个数据中心集群对应的分类文件的信息,以及该分类文件在对应数据中心集群中的存储路径等。以使得各拆分服务器可以将各分类的局部变量写入对应的数据中心集群中的分类文件中。写入过程中以加锁方式进行,防止多个拆分服务器同时写入同一个分类文件,造成分类文件内容混乱。
采用上述方法,在分布式集群的多个服务器,各自根据拆分任务中的分片位置获取待拆分文件中的相应的待拆分分片;如此,可以使得该分布式集群中的多个服务器分别拆分该待拆分文件的各待拆分分片,实现多线程对待拆分文件进行拆分处理,加快待拆分文件的拆分速度。根据文件处理配置中的业务逻辑对该待拆分分片进行拆分;如此,业务逻辑可以由用户自行输入,可以增加拆分方式的灵活性、多变性。将待拆分分片中的每行数据分别记录到该行数据所属分类的局部变量中;如此,设置局部变量,可以通过内存映射的方式获取待拆分分片,使得集群中的各个服务器中始终只有正在进行拆分的待拆分分片的内容,而不需要将待拆分文件或该服务器拆分的所有待拆分分片存储,减少资源占用,保证该服务器的性能一直处于良好状态;且设置局部变量,则不需要针对各分类再生成文件,减少该服务器的工作量,进一步保证该服务器的性能。服务器根据文件处理配置中的分类存储信息,将局部变量写入对应的各分类文件中;如此,由于文件处理配置中的分类存储信息可以由用户自行输入,因此,使得分类的信息可以依照用户的需求随时调整,增加分类的灵活性。
本申请实施例提供了一种文件拆分方法,在记录到所述分类的局部变量中之前,还包括:所述服务器根据所述文件处理配置中的各分类组装规则,获取每行数据对应的组装数据,并按照所述业务逻辑进行组装。
此处,在上一个示例中,待拆分文件中包含上海客户、北京客户、广州客户的理财信息,但没有客户的身份信息,如身份证号码或手机号码等;当需要将身份证号码或手机号码等组装数据组装进待拆分文件中时,拆分服务器在根据文件处理配置中的业务逻辑,将第501-600个字节对应的每行数据分别写入各分类局部变量中的过程中,将每个客户的身份证号码或手机号码等组装数据写入到该客户理财信息的行数据中相应位置,使得待拆分文件中包含客户的身份信息。
这里,可以将组装数据写入步骤202中的context中,方便后续将各分类文件写入数据中心集群,该context可以在拆分服务器集群103所有线程中共享。
本申请实施例提供了一种文件拆分后写入各分类文件的方法,即,将各分类的局部变量以加锁方式写入各分类文件中,包括:针对任一分类的局部变量,所述服务器在Redis服务器中获取所述分类的写入锁;所述服务器将所述分类的局部变量写入对应的分类文件夹;所述服务器在Redis服务器中释放所述分类的写入锁。也就是说,当拆分服务器将分类的局部变量写进对应数据中心集群的分类文件中之前,从Redis服务器中获取该分类对应的写入锁,之后再将该分类的局部变量写进对应数据中心集群的分类文件中。防止发生该分类文件同时被多个拆分服务器写入造成内容混乱的情况。写入完成后,在Redis服务器中释放该分类的写入锁,以使其它拆分服务器写入该分类的局部变量。这里,打开数据中心集群中分类文件的拆分服务器和获取写入锁的拆分服务器可以不同。
本申请实施例提供了一种待拆分分片的获取方法,所述服务器根据拆分任务中的分片位置从待拆分文件中获取待拆分分片,包括:所述服务器确定所述待拆分分片的读取属性;所述读取属性为整片读取或设定大小读取;所述服务器按照所述读取属性,根据拆分任务中的分片位置从待拆分文件中获取待拆分分片。
此处,在上一个示例中,若拆分服务器确定待拆分分片的读取属性为整片读取,则将第501-600个字节全部读取到缓存并进行拆分;若设定大小为20个字节,则每次只缓存20个字节并进行拆分。这里为了保证每次读取内容的完整性,设定大小获取的内容为至少一个整行数据的内容。
本申请实施例提供了又一种待拆分分片的获取方法,所述读取属性为设定大小读取,包括:所述设定大小可以通过如下公式确定:
V=MIN(V,G/R)
其中,V为所述设定大小;G每次读取最大内容,所述G由历史经验值和所述服务器的性能确定;R每行内容大小。
此处,若设定大小为行数时,通过上述公式可以保证拆分服务器每次获取的行数据不超过G/R个,因为G可以为拆分服务器拆分进程处于最优状态时所能读取的最大内容;因此,可以保证拆分服务器在拆分待拆分分片时,性能最好,加快待拆分文件的拆分速度。
这里根据上述拆分过程的实施例,本申请实施例还提供了一种待拆分分片读取方法,如下所示:
拆分服务器将待拆分分片filePair(k)通过内存映射到缓存中,filePair(k)表示待拆分文件中各待拆分分片filePairList中的第k个分片,当读取的内容达到了设定大小(以下用V表示)时,确定参数isPartHandle=true,则表示该待拆分分片的读取属性为部分读取,调用对应的业务逻辑方法做拆分,即:
local rowList;//待拆分分片行数据集合。
local row;//读取的每行数据内容。
local count=0;
for bytedata in filePair(k).data do//bytedata为待拆分分片filePair(k)的内容。
if bytedata==‘\n’//判断设定大小的最后一个字节是否为换行符。
rowList.add(row);//如果是换行符则说明已经读完一行,将已读取的这行内容添加到rowList中。
row.clear();//把row清空,准备读取下一行数据。
count++;//已读取到的行数+1。
if count==V and isPartHandle=true//判断本次读取的总行数是否达到V值,且该待拆分分片的读取属性为不需要整片处理。
callBusinessSplitor(rowList);//读取到V值内容大小,调用对应该待拆分文件的业务逻辑进行拆分。
rowList.clear();//清空已读取到的行数据。
count=0;//将count清零,重新计数。
End。
Else。
row.append(data);//如果读到的V值内容大小不是行尾,则继续向下统计知道获取第一个换行符,将继续向下统计的内容添加到行内容中。
End。
End。
这里,如果isPartHandle=false,则表示待拆分分片的读取属性为整片读取。
本申请实施例提供了又一种分类文件排序方法,所述方法包括:所述各分类文件存储在各数据中心;将各分类的局部变量以加锁方式写入各分类文件中之后,还包括:数据中心将所述数据中心的分类文件进行分片,采用堆排序的方法对各分片进行排序,得到排序后的分类文件。
此处,在数据中心集群获得分类文件后,可以将该分类文件分片得到分类分片,通过调用或输入的排序规则,将分类分片排序,进而得到有序的分类文件。例如,数据中心集群获得分类文件后,将该分类文件分片得到20个分类分片;若数据中心集群中有10个服务器,则分别为每个服务器分2个分类分片,则该服务器将这2个分类分片按照排序规则排序,得到一个有序的分类分片。如此,10个服务器分别将20个分类分片中每2个分类分片排序得到10个有序的分类分片;之后,可以将这10个有序的分类分片分配到5个服务器中,由这5个服务器继续按照该排序规则排序,直到获得一个完整的有序分类文件。该排序规则可以按照内容大小、关键字数量等来排序,可以根据需要设置,排序规则具体不做限定。
本申请实施例提供了又一种拆分文件的方法,将各分类的局部变量以加锁方式写入各分类文件中之前,还包括:所述服务器根据所述文件处理配置打开所述各分类文件;将各分类的局部变量以加锁方式写入各分类文件中之后,还包括:所述服务器在确定所有分类文件已完成写入后,根据所述文件处理配置关闭所述各分类文件;所述文件处理配置为在预设模板上进行编写得到的;所述预设模板设置有打开文件、读取文件及关闭文件的功能代码。也就是说,本申请可以设置预设模板,并在预设模板中设置打开文件、读取文件及关闭文件的功能代码。如此,无需用户另外编写相应的功能代码,减少用户的工作量以及时间成本。另外,还可以解决由于该部分的功能代码的复杂性,造成的用户的工作量大和编写时间长的问题;可以消除由于用户编写打开文件或读取文件的功能代码出现失误而导致文件被破坏的情况;还可以消除由于用户忘记编写或编写错误关闭文件的功能代码,而使得待处理文件一直占用服务器资源的情况。
基于上述流程,本发明实施例提供了一种文件拆分方法的流程,如图3所示,包括:
步骤301、拆分服务器获取待拆分文件,并将该待拆分文件进行分片生成拆分任务。
步骤302、该拆分服务器将各拆分任务发生至Redis服务器。
步骤303、各拆分服务器接收Redis服务器的广播,从Redis服务器中获取拆分任务。
步骤304、各拆分服务器根据各自获取的拆分任务中的分片位置获取待拆分分片,若文件处理配置中设置有各分类组装规则,则获取每行数据对应的组装数据。
步骤305、各拆分服务器将待拆分分片中的数据和组装数据进行分类并组装,并记录在各分类的局部变量中。
步骤306、各拆分服务器将各分类的局部变量分别写入对应分类的数据中心集群中的分类文件中。
步骤307、数据中心集群将各自的分类文件排序,获得有序的分类文件。
基于同样的构思,本发明实施例提供一种文件拆分装置,图4为本发明实施例提供的一种文件拆分装置示意图,如图4示,包括:
获取模块401,针对所述多个服务器中的任一服务器,用于根据拆分任务中的分片位置从待拆分文件中获取待拆分分片;
处理模块402,用于根据文件处理配置中的业务逻辑,确定所述待拆分分片中每行数据对应的分类并记录到所述分类的局部变量中;
所述处理模块402还用于,根据所述文件处理配置中的分类存储信息,将各分类的局部变量以加锁方式写入各分类文件中。
在一种可能的设计中,所述获取模块401还用于:根据所述文件处理配置中的各分类组装规则,获取每行数据对应的组装数据,并按照所述业务逻辑进行组装。
在一种可能的设计中,所述处理模块402具体用于:针对任一分类的局部变量,所述服务器在Redis服务器中获取所述分类的写入锁;所述服务器将所述分类的局部变量写入对应的分类文件夹;所述服务器在Redis服务器中释放所述分类的写入锁。
在一种可能的设计中,所述获取模块401具体用于:所述服务器确定所述待拆分分片的读取属性;所述读取属性为整片读取或设定大小读取;所述服务器按照所述读取属性,根据拆分任务中的分片位置从待拆分文件中获取待拆分分片。
在一种可能的设计中,所述读取属性为设定大小读取,包括:
所述设定大小可以通过如下公式确定:
V=MIN(V,G/R)
其中,V为所述设定大小;G每次读取最大内容,所述G由历史经验值和所述服务器的性能确定;R每行内容大小。
在一种可能的设计中,所述处理模块402具体用于:所述各分类文件存储在各数据中心;将各分类的局部变量以加锁方式写入各分类文件中之后,还用于:数据中心将所述数据中心的分类文件进行分片,采用堆排序的方法对各分片进行排序,得到排序后的分类文件。
在一种可能的设计中,所述处理模块402还用于:所述服务器根据所述文件处理配置打开所述各分类文件;将各分类的局部变量以加锁方式写入各分类文件中之后,还包括:所述服务器在确定所有分类文件已完成写入后,根据所述文件处理配置关闭所述各分类文件;所述文件处理配置为在预设模板上进行编写得到的;所述预设模板设置有打开文件、读取文件及关闭文件的功能代码。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (10)
1.一种文件拆分方法,其特征在于,适用于分布式集群;所述分布式集群中的多个服务器用于执行各自的拆分任务;所述方法包括:
针对所述多个服务器中的任一服务器,所述服务器根据拆分任务中的分片位置从待拆分文件中获取待拆分分片;
所述服务器根据文件处理配置中的业务逻辑,确定所述待拆分分片中每行数据对应的分类并记录到所述分类的局部变量中;
所述服务器根据所述文件处理配置中的分类存储信息,将各分类的局部变量以加锁方式写入各分类文件中。
2.如权利要求1所述的方法,其特征在于,记录到所述分类的局部变量中之前,还包括:
所述服务器根据所述文件处理配置中的各分类组装规则,获取每行数据对应的组装数据,并按照所述业务逻辑进行组装。
3.如权利要求1所述的方法,其特征在于,将各分类的局部变量以加锁方式写入各分类文件中,包括:
针对任一分类的局部变量,所述服务器在Redis服务器中获取所述分类的写入锁;
所述服务器将所述分类的局部变量写入对应的分类文件夹;
所述服务器在Redis服务器中释放所述分类的写入锁。
4.如权利要求1所述的方法,其特征在于,所述服务器根据拆分任务中的分片位置从待拆分文件中获取待拆分分片,包括:
所述服务器确定所述待拆分分片的读取属性;所述读取属性为整片读取或设定大小读取;
所述服务器按照所述读取属性,根据拆分任务中的分片位置从待拆分文件中获取待拆分分片。
5.如权利要求4所述的方法,其特征在于,所述读取属性为设定大小读取,包括:
所述设定大小可以通过如下公式确定:
V=MIN(V,G/R)
其中,V为所述设定大小;G每次读取最大内容,所述G由历史经验值和所述服务器的性能确定;R每行内容大小。
6.如权利要求1所述的方法,其特征在于,所述方法包括:
所述各分类文件存储在各数据中心;
将各分类的局部变量以加锁方式写入各分类文件中之后,还包括:
数据中心将所述数据中心的分类文件进行分片,采用堆排序的方法对各分片进行排序,得到排序后的分类文件。
7.如权利要求1所述的方法,其特征在于,
将各分类的局部变量以加锁方式写入各分类文件中之前,还包括:
所述服务器根据所述文件处理配置打开所述各分类文件;
将各分类的局部变量以加锁方式写入各分类文件中之后,还包括:
所述服务器在确定所有分类文件已完成写入后,根据所述文件处理配置关闭所述各分类文件;所述文件处理配置为在预设模板上进行编写得到的;所述预设模板设置有打开文件、读取文件及关闭文件的功能代码。
8.一种文件拆分装置,其特征在于,适用于分布式集群;所述分布式集群中的多个服务器用于执行各自的拆分任务;所述装置包括:
获取模块,针对所述多个服务器中的任一服务器,用于根据拆分任务中的分片位置从待拆分文件中获取待拆分分片;
处理模块,用于根据文件处理配置中的业务逻辑,确定所述待拆分分片中每行数据对应的分类并记录到所述分类的局部变量中;
所述处理模块还用于,根据所述文件处理配置中的分类存储信息,将各分类的局部变量以加锁方式写入各分类文件中。
9.一种计算设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于调用所述存储器中存储的计算机程序,按照获得的程序执行权利要求1至7任一项所述的方法。
10.一种计算机可读非易失性存储介质,其特征在于,包括计算机可读程序,当计算机读取并执行所述计算机可读程序时,使得计算机执行如权利要求1至7任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010452379.5A CN111625505A (zh) | 2020-05-26 | 2020-05-26 | 一种文件拆分方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010452379.5A CN111625505A (zh) | 2020-05-26 | 2020-05-26 | 一种文件拆分方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111625505A true CN111625505A (zh) | 2020-09-04 |
Family
ID=72259111
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010452379.5A Pending CN111625505A (zh) | 2020-05-26 | 2020-05-26 | 一种文件拆分方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111625505A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112256642A (zh) * | 2020-10-13 | 2021-01-22 | 北京神州数字科技有限公司 | 微服务体系下文件分布式写入、读取、处理机制及系统 |
-
2020
- 2020-05-26 CN CN202010452379.5A patent/CN111625505A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112256642A (zh) * | 2020-10-13 | 2021-01-22 | 北京神州数字科技有限公司 | 微服务体系下文件分布式写入、读取、处理机制及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20170109378A1 (en) | Distributed pipeline optimization for data preparation | |
CN107729135B (zh) | 按序进行并行数据处理的方法和装置 | |
CN112669155A (zh) | 基于区块链的交易分发执行方法、装置服务器及存储介质 | |
US10642814B2 (en) | Signature-based cache optimization for data preparation | |
CN104077328B (zh) | MapReduce分布式系统的作业诊断方法及设备 | |
CN111694750A (zh) | 一种软件测试环境的构建方法及装置 | |
WO2021226822A1 (zh) | 日志写入方法、装置、电子设备以及存储介质 | |
CN113485999A (zh) | 数据清理方法、装置和服务器 | |
CN115297041A (zh) | 一种流量回放的数据验证方法及装置 | |
CN117369731B (zh) | 一种数据的缩减处理方法、装置、设备及介质 | |
CN111625505A (zh) | 一种文件拆分方法及装置 | |
CN111625507A (zh) | 一种文件处理方法及装置 | |
CN107168788B (zh) | 分布式系统中资源的调度方法以及装置 | |
CN110489242A (zh) | 分布式数据计算方法、装置、终端设备及存储介质 | |
CN111984666A (zh) | 数据库访问方法、装置、计算机可读存储介质和计算机设备 | |
CN107391539B (zh) | 事务处理方法、服务器和存储介质 | |
US20160306972A1 (en) | Virus signature matching method and apparatus | |
CN117492670A (zh) | 日志打印序列的确定方法、装置及电子设备 | |
JP7427896B2 (ja) | データベースの分割システム、データベースの分割方法、及びデータベースの分割プログラム | |
CN110008382B (zh) | 一种确定TopN数据的方法、系统及设备 | |
CN115563116A (zh) | 一种数据库表扫描方法、装置以及设备 | |
CN113657084A (zh) | 一种自动读取Excel内容的方法及系统 | |
CN115185998A (zh) | 目标字段查找方法及装置、服务器、计算机可读存储介质 | |
CN110377601B (zh) | 一种基于B树数据结构的MapReduce计算过程优化方法 | |
CN112965939A (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 |