文件处理的方法及装置
技术领域
本说明书一个或多个实施例涉及计算机技术领域,尤其涉及通过计算机文件处理的方法和装置。
背景技术
云计算(Cloud Computing)是分布式处理(Distributed Computing)、并行处理(Parallel Computing)和网格计算(Grid Computing)的发展,通过网络将庞大的计算处理程序拆分成若干较小的子程序,将这些小程序分别交由多台服务器所组成的系统进行计算,并输出计算结果。云存储是在云计算上延伸出来的概念,一般是指通过集群应用、网格技术或分布式文件系统等功能,将网络中大量不同类型的存储设备通过应用软件集合在一起,实现协同工作,共同对外提供数据存储和业务访问功能。即云存储系统就是一个以数据存储和管理为核心的云计算系统。云存储系统可以通过一定的应用软件或应用接口,为用户提供一定类型的存储服务和访问服务。
通常,需要解析文件的情况下,例如需要将文件从其他格式解析成内部可以处理的格式时,如果文件较大,往往需要将大文件切割为较小的切片文件,然后由解析设备集群对各个切片文件进行解析。这个过程通常涉及大文件和切割好的切片文件的下载和上传,产生较多耗时。因此,希望能有改进的方案,在解析大文件时,通过有效的文件分割,减少耗时,提高文件处理的有效性。
发明内容
本说明书一个或多个实施例描述了一种方法和装置,可以选择性地下载部分待处理文件,通过确定各个分片文件的索引信息确定待处理文件的划分方案,而无需下载整个文件并真实切割,从而减少耗时,提高文件处理的有效性。
根据第一方面,提供了一种文件处理的方法,适用于通过解析设备集群针对待云存储服务器中的处理文件进行解析的情况,包括:从云存储服务器下载起始文件块,以获取所述待处理文件的首个行分隔符的位置,所述起始文件块是所述待处理文件中从起始位置开始的、包括所述首个行分隔符的文件块;基于所述首个行分隔符的位置确定所述待处理文件的行容量;根据预设分片行数和所述行容量,下载所述待处理文件中的第一分界文件块,所述第一分界文件块包括,当按照所述预设分片行数将所述待处理文件进行划分时,划分得到的多个分片文件中第一分片文件的结束位置的行分隔符;至少基于所述第一分界文件块中的行分隔符的位置,确定所述第一分片文件的第一索引数据,所述第一索引数据包括第一开始索引和第一结束索引,所述第一索引数据用于所述解析设备集群中的解析设备按照所述第一索引数据,从所述云存储服务器解析所述第一分片文件。
在一些实施例中,所述从云存储服务器下载起始文件块包括:从起始位置开始下载预定大小的文件块作为起始文件块,并从所述起始文件块中查找行分隔符;在未查找到行分隔符的情况下,向后增加一个预定大小的文件块以更新所述起始文件块,直到从中查找到首个行分隔符。
在一些实施例中,基于所述首个行分隔符的位置确定所述待分割文件的行容量包括:将所述行容量确定为,所述待处理文件的起始位置至所述首个分隔符的位置所包含的字节数。
在一些实施例中,根据预设分片行数和所述行容量下载所述待处理文件中的第一分界文件块包括:确定所述第一分片文件的文件开始位置;确定所述第一分界文件块的块开始位置为,所述文件开始位置加上分片容量的位置,所述第一分界文件块的大小为一个行容量,其中,所述分片容量为,所述预设分片文件行数与所述行容量的乘积。
在一些实施例中,根据预设分片行数和所述行容量,下载所述待处理文件中的第一分界文件块还包括:下载所述第一分界文件块,并从所述第一分界文件块中查找行分隔符;在未查找到行分隔符的情况下,向后增加一个行容量大小的文件块以更新所述第一分界文件块,并下载更新后的第一分界文件块,直到从中查找到行分隔符。
在一些实施例中,其中确定所述第一分片文件的文件开始位置包括:在所述第一分片文件是所述待处理文件的第一个分片文件的情况下,将所述待处理文件的所述起始位置作为所述第一分片文件的文件开始位置;否则,将所述第一分片文件的前一个分片文件的结束位置作为所述文件开始位置。
在一些实施例中,所述第一分片文件为所述待处理文件的第一个分片文件,所述确定所述第一分片文件的第一索引数据包括:确定所述第一开始索指向所述待处理文件的所述起始位置;确定所述第一结束索引指向所述第一分界文件块中的行分隔符的位置。
在一些实施例中,所述方法还包括:获取所述待处理文件的文件大小信息;以及,根据预设分片行数和所述行容量,下载所述待处理文件中的第一分界文件块还包括:获取所述待处理文件的文件大小信息;基于所述文件大小信息检测所述第一分界文件块是否超出所述待处理文件的文件大小范围;在超出的情况下,确定最后一个分片文件的所述第一结束索引指向所述待处理文件的结束位置。
在一些实施例中,所述确定所述第一分片文件的第一索引数据包括:将所述第一分片文件的前一个分片文件的结束索引作为所述第一开始索引;确定所述第一结束索引指向所述第一分界文件块中的行分隔符的位置。
在一些实施例中,所述方法还包括,将第一索引数据添加到用于所述多个分片文件的索引信息中。
在一些实施例中,所述方法还包括,利用所述索引信息更新所述云存储服务器中的任务配置表,以供所述云存储服务器按照所述任务配置表的分发规则向所述解析设备集群分发所述索引信息。
在一些实施例中,所述方法还包括,将所述第一索引数据作为传递参数,通过参数调用的方式发送至所述解析设备集群。
根据第二方面,提供一种文件处理的装置,适用于通过解析设备集群针对待处理文件进行解析的情况,包括:
起始文件块下载单元,配置为从所述云存储服务器下载起始文件块,以获取所述待处理文件的首个行分隔符的位置,所述起始文件块是所述待处理文件中从起始位置开始的、包括所述首个行分隔符的文件块;行容量确定单元,配置为基于所述首个行分隔符的位置确定所述待处理文件的行容量;分界文件块下载单元,配置为根据预设分片行数和所述行容量,下载所述待处理文件中的第一分界文件块,所述第一分界文件块包括,当按照所述预设分片行数将所述待处理文件进行划分时,划分得到的多个分片文件中第一分片文件的结束位置的行分隔符;索引数据确定单元,配置为至少基于所述第一分界文件块中的行分隔符的位置,确定所述第一分片文件的第一索引数据,所述第一索引数据包括第一开始索引和第一结束索引,所述第一索引数据用于解析设备按照所述第一索引数据,从所述云存储服务器解析所述第一分片文件。
根据第三方面,提供了一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行第一方面的方法。
根据第四方面,提供了一种计算设备,包括存储器和处理器,其特征在于,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现第一方面的方法。
通过本说明书实施例提供的方法和装置,首先从待处理文件的起始位置下载起始文件块,并根据起始文件块中首个行分隔符的位置确定行容量,然后基于行容量和预设分片行数下载分界文件块,通过读取分界文件块获取其中的行分隔符,从而至少基于该行分隔符得到分片文件的索引数据,用于解析设备根据索引数据从云存储服务器解析分片文件。如此,仅仅需要从云存储服务器获取起始文件块和分界文件块,由于选择性地下载部分待处理文件,通过确定各个分片文件的索引信息确定待处理文件的划分方案,而不用下载整个文件并对文件进行真实切割,可以减少耗时,提高文件处理的有效性。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1示出本说明书披露的一个实施例的实施场景示意图;
图2示出根据一个实施例的文件处理的方法流程图;
图3示出确定待处理文件的行分隔符和分界文件块的一个具体例子;
图4示出根据一个实施例的用于文件处理的装置的示意性框图。
具体实施方式
下面结合附图,对本说明书提供的方案进行描述。
图1为本说明书披露的一个实施例的实施场景示意图。如图1所示,云存储服务器110可以为计算平台130等提供分布式存储服务,例如某个云对象存储服务平台OSS(ObjectStorage Service)。计算平台130、解析设备121、122、123等都可以按照一定规则向云存储服务器110存储数据,或者从云存储服务器110获取数据。例如,计算平台130或解析设备121、122、123等可以通过发送包含指定字段(如第10字节至第100字节)的请求,从云存储服务器110下载该指定字段的数据(如从第10字节开始至第100字节结束的数据)。计算平台130与解析设备121、122、123等也可以通过各种有线或无线网络交互数据。计算平台130是具有一定数据处理能力的电子设备,如为客户端应用提供支持的服务器,比如支付宝服务器、钉钉服务器、购物应用服务器等。
当计算平台130中的文件处理器要处理的文件存储在云存储服务器110中,且云存储服务器110中存储的文件格式(如html格式)不是该文件处理器能够处理的文件格式(如txt格式)时,如果要处理的文件较大,计算平台130自身无法解析,或解析需要耗费时间较长,造成数据处理压力的情况下,可以将解析任务分发给解析设备121、122、123等来完成。
通常,计算平台130从云存储服务器110下载待处理文件,保存到本地,然后从待处理文件中每读取预设行数(如5000行)保存成一个分片文件,再将各个分片文件上传至云存储服务器110。云存储服务器110用各个分片文件信息更新任务配置表,然后将各个分片文件的文件信息作为分发参数分发给解析设备121、122、123等,解析设备121、122、123等根据收到的文件信息解析相应的分片文件,生成计算平台130中的文件处理器能够处理的文件格式的文件。这种方法的文件解析总耗时至少包括:计算平台130从云存储服务器110下载待处理文件的耗时t11、计算平台130针对下载到本地的待处理文件逐行读取以分割成各个分片文件的耗时t12、计算平台130向云存储服务器110上传各个分片文件的耗时t13、云存储服务器110用各个分片文件信息更新任务配置表的耗时t14、云存储服务器110向解析设备121、122、123等分发解析任务的耗时t15、解析设备121、122、123等解析相应分片文件耗时t16。
在本说明书的实施例中,计算平台130可以首先从待处理文件的起始位置下载起始文件块,并根据起始文件块中首个行分隔符的位置确定行容量,然后基于行容量和预设分片行数下载分界文件块用于确定分片文件的索引数据。这里,计算平台130从云存储服务器110是选择性地下载待处理文件中的文件块,而非全部下载,所确定的是分片文件的索引数据,而没有对待处理文件进行真实切割。之后,计算平台130可以将这些索引信息上传至云存储服务器110,更新任务配置表,由云存储服务器110根据任务配置表向解析设备121、122、123等分发解析任务,也可以直接将索引信息作为参数传递至解析设备121、122、123等,以分发解析任务。
这样,由云存储服务器110分发解析任务的情况下,文件解析的耗时包括:计算平台130从云存储服务器110选择性下载部分文件块的耗时t21、从所下载的文件块中确定各个分片文件索引信息的耗时t22、向云存储服务器110上传各个分片文件的索引信息的耗时t23、云存储服务器110用各个分片文件信息更新任务配置表的耗时t24、云存储服务器110向解析设备121、122、123等分发解析任务的耗时t25、解析设备121、122、123等解析相应分片文件耗时t26。可以理解,从云存储服务器110选择性下载部分文件块的耗时t21远远小于从云存储服务器110下载整个待处理文件的耗时t11,从所下载的文件块中确定出索引信息的耗时t22小于针对下载到本地的待处理文件逐行读取以分割成各个分片文件的耗时t12,计算平台130向云存储服务器110上传各个分片文件的索引信息的耗时t23远远小于上传各个分片文件的耗时t13,其他耗时t14、t15、t16与t24、t25、t26基本一致,因此,可以大大减少文件解析耗时。
由云计算平台130分发解析任务的情况下,文件解析的耗时包括:计算平台130从云存储服务器110选择性下载部分文件块的耗时t31、从所下载的文件块中确定各个分片文件索引信息的耗时t32、计算平台130向解析设备121、122、123等分发解析任务的耗时t33、解析设备121、122、123等解析相应分片文件耗时t34。与现有技术相比,从云存储服务器110选择性下载部分文件块的耗时t21小于从云存储服务器110下载待处理文件的耗时t11,从所下载的文件块中确定出索引信息的耗时t22小于针对下载到本地的待处理文件逐行读取以分割成各个分片文件的耗时t12,解析设备121、122、123等解析相应分片文件耗时t34与t16基本一致,计算平台130直接向解析设备121、122、123等分发解析任务,耗时t33,省去了计算平台130向云存储服务器110上传各个分片文件的耗时t13、云存储服务器110用各个分片文件信息更新任务配置表的耗时t14,小于或等于云存储服务器110向解析设备121、122、123等分发解析任务的耗时t15,因此,耗时大大减小。
以下详细说明上述计算平台130通过选择性下载的文件块确定各个分片文件的索引信息的过程。
图2示出根据一个实施例的文件处理的方法流程图。该方法适用于通过解析设备集群针对待处理文件进行解析的情况,其执行主体可以是任何具有计算、处理能力的系统、设备、装置、平台或服务器,例如图1所示的计算平台。
如图2所示,该方法包括以下步骤:步骤21,从云存储服务器下载待处理文件中从起始位置开始的起始文件块,以获取待处理文件的首个行分隔符的位置;步骤22,基于首个行分隔符的位置确定待处理文件的行容量;步骤23,根据预设分片行数和上述行容量,确定待处理文件中的第一分界文件块,该第一分界文件块包括,当按照预设分片行数将待处理文件进行划分时,划分得到的多个分片文件中第一分片文件的结束位置的行分隔符;步骤24,至少基于第一分界文件块中的行分隔符的位置,确定第一分片文件的第一索引数据,该第一索引数据包括第一开始索引和第一结束索引,第一索引数据用于解析设备按照第一索引数据,从云存储服务器解析上述第一分片文件。
首先,在步骤21,从云存储服务器下载起始文件块,以获取待处理文件的首个行分隔符的位置,其中起始文件块是待处理文件中从起始位置开始的文件块,并包括首个行分隔符。值得说明的是,这里的文件块不是文件存储时的块block,而是文件里面指定位置和/或大小的一段文件。例如,指定起始位置为待处理文件的起始位置、大小为4千字节(4kb)的文件块,就是从待处理文件起始位置开始的包括4千个字节的一段文件。
起始文件块的大小可以根据经验确定,也可以是随机设置的一个较小数值,以从云存储服务器下载尽可能小的文件块。以根据经验确定为例,可以通过统计多个文件的首行文件大小,取其中的最大值,或大于预定比例(如90%)的首行文件大小的值,确定为起始文件块的大小。如图3所示,可以根据预定文件块大小,下载从位置31到位置32之间的起始文件块。
针对下载的起始文件块,可以从起始位置开始检测行分隔符,以查找首个行分隔符的位置。可以理解,由于起始文件块是从待处理文件的起始位置开始的,其到首个行分隔符的位置处的文件大小就是首行文件大小。
在一些实施例中,起始文件块中可以包括一个或多个行分隔符,此时,将检测到的第一个行分隔符确定为首个行分隔符。如图3所示,假设位置32处有一个行分隔符,则将其确定为首个行分隔符。
在另一些实施例中,起始文件块中也可能包括0个行分隔符。此时,起始文件块的大小还可以根据实际情况进行改变。例如,初始时,从起始位置开始下载预定大小(如4kb)的文件块作为起始文件块,并从该起始文件块查找行分隔符;在未查找到行分隔符的情况下,向后增加一个预定大小(与前面的预定大小4kb可以相同,也可以不同)的文件块以更新上述起始文件块,直到从中查找到首个行分隔符。假设初始时从待处理文件的起始位置下载预定大小4kb的一个文件块,当从这4kb的文件块里没有查找到行分隔符时,可以将初始文件块的大小更新为(4+4=8)kb,即,可以从待处理文件的起始位置下载大小为8kb的一段文件作为初始文件块,并从中查找行分隔符。如果查找到行分隔符,则可以确定首个行分隔符的位置。否则,继续更新初始文件块,初始文件块大小为12kb,并从中查找行分隔符。以此类推,直到从初始文件块中查找到行分隔符,确定出首个行分隔符的位置。
步骤22,基于首个行分隔符的位置确定待处理文件的行容量。可以理解,行容量可以用于表示待处理文件的一行文件的大小,如图3所示,位置31和位置32之间的文件块的大小。在一个实施例中,可以将行容量确定为,待处理文件的起始位置(如位置31)至首个行分隔符的位置(如位置32)所包含的字节数(如4kb)。
在一些可选的实施例中,待处理文件的第一行文件可能较特殊,例如只有一个文件头等,此时,可以通过预先设定排除条件(如小于10字节等)将其排除,然后查找下一个行分隔符,将首个行分隔符与下一个行分隔符之间的文件块的大小确定为行容量。
在另一些可选的实施例中,还可以根据待处理文件的起始位置和首个行分隔符之间的文件段大小确定第一行容量,根据首个行分隔符和第二个行分隔符之间的文件大小确定第二行容量,将第一行容量和第二行容量的平均值或较大值作为本步骤22所确定的行容量。
如此,可以排除待处理文件第一行较特殊的情况。
步骤23,根据预设分片行数和上述行容量,下载待处理文件中的第一分界文件块。该第一分界文件块包括,当按照预设分片行数将待处理文件进行划分时,划分得到的多个分片文件中第一分片文件的结束位置的行分隔符。值得说明的是,第一分片文件和第一分解文件块中的“第一”并不表示顺序,而是表示某一个、任一个,为了便于描述分片文件和分界文件块的对应关系,通过“第一”来表示。
其中,预设分片行数可以是人为设置的,也可以是根据待处理文件大小、行容量和解析设备数量确定的。例如,待处理文件大小为1000兆字节(Mb),行容量为4kb,则预估行数为1000Mb/4kb=1000×1024/4=256000,假设空闲解析设备为64个,则可以将待处理文件按照4000行为一个分片文件,得到64个分片文件,以保证每个解析设备都可以分配到分片文件,加快处理速度。可以理解,此处仅为示例,实践中可以根据情况确定预设分片行数,本申请对此不作限定。
根据预设分片行数和上述行容量,可以确定待处理文件中的第一分界文件块。该第一分界文件块可以表示第一分片文件结束的大概位置。容易理解,由于针对待处理文件划分分片文件时,是按照行数划分,因此,一个分片文件的结束位置是一行结束的位置,因此,可以根据预估的分界位置,查找相应的行分隔符,来精确确定一个分片文件的结束位置。由此,可以将包括有用于划分第一分片文件的结束位置的行分隔符的一段文件作为预估的分界位置,并确定为第一分界文件块进行下载。
实践中,可以先确定第一分片文件的文件开始位置,例如当第一分片文件为整个待处理文件的第一个分片文件时,第一分片文件的文件开始位置为待处理文件的起始位置,当第一分片文件为其他分片文件时,第一分片文件的文件开始位置为前一个分片文件的结束位置。
为了便于说明,可以将预设分片文件行数与行容量的乘积称之为分片容量。则每一个分片文件的大小在一个分片容量上下浮动。可以理解,如果预设分片行数为5000行,上述行容量为4kb,对于待处理文件的第一个分片文件,其结束位置大概在距离待处理文件起始位置5000×4kb的位置附近。实践中,为了尽可能保证所下载的文件块中能够找到行分隔符,分界文件块的大小一般取为一个行容量大小。当然,分界文件块的大小还可以取为其他值,例如1.5个行容量大小,本申请对此不作限定。在这里仅以取为一个行容量大小为例进行说明。
根据一方面的实施例,可以以距离某个分片文件起始位置5000×4kb处为中心,前后各取2kb,共4kb大小的文件块作为该分片文件对应的分界文件块。即,将分界文件块的块开始位置确定为,分片文件起始位置加上分片容量并减去行容量的一半的位置。以第一个分片文件为例,第一个分界文件块为:(5000×4kb-2kb)处至(5000×4kb+2kb)处的一段文件。
根据另一方面的实施例,也可以将从距离分片文件起始位置5000×4kb处,向后取大小为4kb大小的文件块作为该分片文件对应的分界文件块。即,确定第一分界文件块的块开始位置为,文件开始位置加上分片容量的位置。以第一个分片文件为例,对应的第一个分界文件块可以为:(5000×4kb)处至(5001×4kb)处的一段文件。如图3所示,假设分片文件的起始位置加上一个分片容量的位置在位置33,则可以取位置33至位置34之间的、包含一个行容量大小的一段文件作为对应的分界文件块。
接下来,还需要从分界文件块中查找行分隔符,以进一步确定分片文件的具体结束位置。可以理解,与起始文件块类似地,分界文件块中可能包含1个或多个行分隔符,也可能未包含行分隔符。
在一个实施例中,分界文件块包含1个或多个行分隔符,可以将其中第一个或最后一个行分隔符的位置确定为对应分片文件的结束位置。如在以位置33开始,位置34结束的分界文件块中查找到位置35处具有行分隔符,则将位置35确定为该分片文件的结束位置。
在另一个实施例中,分界文件块包含0个行分隔符,则可以向后增加一个行容量大小的文件块以更新该分界文件块,并下载更新后的分界文件块,直到从中查找到行分隔符。仍以第一个分片文件,第一个分界文件块为:(5000×4kb)处至(5001×4kb)处的一段文件为例,如果在该第一个分界文件块(5000×4kb)处至(5001×4kb)处的一段文件中未查找到行分隔符,则将第一个分界文件块更新为(5000×4kb)处至(5002×4kb)处的一段文件,下载更新后的分界文件块,从中查找行分隔符。以此类推,直到在第一个分界文件块中查找到行分隔符。
在一个实施例中,分界文件块包含0个行分隔符,还可以向前后各增加一段文件,共增加一个行容量大小的文件段以更新该分界文件块,并下载更新后的分界文件块,直到从中查找到行分隔符。例如分界文件块为(5000×4kb-2kb)处至(5000×4kb+2kb)处的一段文件,更新为(5000×4kb-4kb)处至(5000×4kb+4kb)处的一段文件。在此不再赘述。
容易理解,当第一分片文件是整个待处理文件的最后一个分片文件时,从前一个分片文件的结束位置到待处理文件的结束位置的大小可能不足一个分片容量的大小,此时,如果仍按照前述确定第一分界文件块的位置的方法,将会导致错误。因此,根据一些可能的实施例,在该流程步骤21开始之前,还可以包括以下步骤:获取待处理文件的文件大小信息。其中,该文件大小信息可以通过从云存储器读取的待处理文件的元信息中获取,例如1000Mb。
由此,在一个可选的实施方式中,在本步骤23之前,或在步骤23中,还可以进一步包括判断第一分片文件是否为最后一个分片文件的步骤。具体包括:获取待处理文件的文件大小信息;基于文件大小信息检测第一分界文件块是否超出待处理文件的文件大小范围。在超出的情况下,确定第一分片文件为最后一个分片文件,无需下载相应的分界文件块。
步骤24,至少基于第一分界文件块中的行分隔符的位置,确定第一分片文件的第一索引数据。同理,此处的“第一索引数据”中的“第一”不表示顺序,而是和“第一分界文件块”、“第一分片文件”对应,表示同一个。
该第一索引数据可以包括第一开始索引和第一结束索引。如,第i个分片文件的第一索引数据pi用(pi0,pi1)表示,其中,第一开始索引pi0指向第i个分片文件的开始位置,第一结束索引pi1指向第i个分片文件的结束位置。可选地,第一开始索引pi0可以是第i个分片文件的开始位置本身,第一结束索引pi1可以是第i个分片文件的结束位置本身。
在第一分片文件为待处理文件的第一个分片文件的情况下,可以确定第一开始索指向待处理文件的起始位置;确定第一结束索引指向第一分界文件块中的行分隔符的位置。如图3所示,假设位置33至位置34之间的文件块是第一个分片文件的第一分界文件块,则第一个分片文件的第一索引数据p1中(p10,p11)可以为(位置31,位置35),例如位置31,位置35可以分别为(0,5000×4kb),将待处理文件起始位置至第5000×4kb字节位置的一段文件确定为第一个分片文件。
对于其他分片文件,可以将前一个分片文件的结束索引作为其开始索引,同样,确定其结束索引指向相对应的分界文件块中的行分隔符的位置。例如,在第一个分片文件的索引数据p1(p10,p11)为(0,5000×4kb)的情况下,第二个分片文件的索引数据p2可以为(p20,p21),如p20、p21分别指向(5000×4kb,10000×4kb),则将第5000×4kb字节位置至第10000×4kb位置的一段文件确定为第二个分片文件。其中,当前分片文件(第二个分片文件)的开始索引p20与前一分片文件(第一个分片文件)的结束索引p11指向相同的位置。
如此,从第一个分片文件开始,循环步骤23和步骤24,可以按顺序确定出各个分片文件的索引数据。索引数据可以用于解析设备按照该索引数据,从云存储服务器解析相对应的分片文件。
在一个可能的实施方式中,第一分片文件为最后一个分片文件,且第一分界文件块超出待处理文件的文件大小范围,此时,可以将待处理文件的结束位置确定为第一结束索引指向的位置。作为示例,假设通过文件大小信息得到待处理文件的大小为1000Mb,如果第一分片文件的起始位置为距离待处理文件起始位置990Mb处,确定相对应的第一分界文件块位置为:(990Mb+5000×4kb)至(990Mb+5001×4kb),而待处理文件结束位置为(990Mb+10240kb)=1000Mb,由此,可以判断第一分界文件块超出待处理文件的文件大小范围,此时,可以直接将待处理文件结束位置1000Mb确定为第一结束索引指向的位置。
根据一种实施方式,可以将各个分片文件的索引数据添加到索引信息中。该索引信息用于存储针对待处理文件划分的多个分片文件的索引数据。该索引信息可以保存为表格、数组、集合等等。例如:索引信息[p1(p10,p11);p2(p20,p21)……],用于将待处理文件划分时,划分为[(0,5000×4kb);(5000×4kb,10000×4kb)……]的分片文件。
在一个实施例中,可以利用上述索引信息更新云存储服务器中的任务配置表,以供云存储服务器按照任务配置表的分发规则向多个解析设备分发索引信息中的各个索引数据。其中,任务配置表的分发规则可以是,诸如计算各个解析设备的当前任务量,向当前任务量较少的解析设备分发较多的解析任务,等等一切公知技术可以提供的分发规则,在此不再赘述。
在一个实施例中,还可以不向云存储服务器上传索引信息,而是直接将索引信息中的索引数据作为传递参数,通过参数调用的方式(如RPC调用)发送至解析设备集群中的某个解析设备。可选地,还可以每得到一个索引数据,就直接将该索引数据作为传递参数,通过参数调用的方式发送至一个解析设备。
解析设备得到索引数据后,可以根据索引数据指向的位置,解析对应的分片文件,如解析图3中以位置31开始、以位置35结束的分片文件。
回顾以上过程,通过起始文件块获取行容量,再根据预设分片行数和行容量确定分界文件块,通过下载分界文件块获取其中的行分隔符,从而至少基于该行分隔符得到分片文件的索引数据,用于解析设备根据索引数据从云存储服务器解析分片文件,如此,可以仅仅从云存储服务器获取起始文件块和分界文件块,由于选择性地下载部分待处理文件,通过确定各个分片文件的索引信息确定待处理文件的划分方案,而不用下载整个文件并对文件进行真实切割,可以减少耗时,提高文件处理的有效性。
根据另一方面的实施例,还提供一种文件处理的装置,适用于通过解析设备集群针对待处理文件进行解析的情况。图4示出根据一个实施例的用于文件处理的装置的示意性框图。如图4所示,用于文件处理的装置400包括:包括:起始文件块下载单元41,配置为从所述云存储服务器下载起始文件块,以获取所述待处理文件的首个行分隔符的位置,该起始文件块是待处理文件中从起始位置开始的、包括首个行分隔符的文件块;行容量确定单元42,配置为基于首个行分隔符的位置确定待处理文件的行容量;分界文件块下载单元43,配置为根据预设分片行数和行容量,下载待处理文件中的第一分界文件块,第一分界文件块包括,当按照预设分片行数将待处理文件进行划分时,划分得到的多个分片文件中第一分片文件的结束位置的行分隔符;索引数据确定单元44,配置为至少基于第一分界文件块中的行分隔符的位置,确定第一分片文件的第一索引数据,第一索引数据包括第一开始索引和第一结束索引,第一索引数据用于解析设备按照第一索引数据,从云存储服务器解析第一分片文件。
根据一方面的实施例,起始文件块下载单元41进一步配置为:从起始位置开始下载预定大小的文件块作为起始文件块,并从起始文件块中查找行分隔符;在未查找到行分隔符的情况下,向后增加一个预定大小的文件块以更新起始文件块,直到从中查找到首个行分隔符。
在一个实施例中,行容量确定单元42进一步配置为:将行容量确定为,待处理文件的起始位置至首个分隔符的位置所包含的字节数。
根据一种可能的设计,分界文件块下载单元43包括:第一确定模块,配置为确定第一分片文件的文件开始位置;第二确定模块,配置为确定第一分界文件块的块开始位置为,文件开始位置加上分片容量的位置,所述第一分界文件块的块结束位置为,所述块开始位置加上一个行容量的位置,其中,分片容量为,预设分片文件行数与行容量的乘积。
在进一步的实施例中,分界文件块下载单元43还包括:下载模块,配置为下载第一分界文件块;查找模块,配置为从第一分界文件块中查找行分隔符;在未查找到行分隔符的情况下,上述第二确定模块还可以向后增加一个行容量大小的文件块以更新第一分界文件块,并通过上述下载模块下载更新后的第一分界文件块,直到上述查找模块从中查找到行分隔符。
在一个实施例中,第一确定模块进一步可以配置为:在第一分片文件是待处理文件的第一个分片文件的情况下,将待处理文件的起始位置作为第一分片文件的文件开始位置;否则,将第一分片文件的前一个分片文件的结束位置作为文件开始位置。
当第一分片文件为待处理文件的第一个分片文件时,索引数据确定单元44进一步可以配置为:确定第一开始索指向待处理文件的起始位置;确定第一结束索引指向第一分界文件块中的行分隔符的位置。
当第一分片文件为待处理文件的其他分片文件时,索引数据确定单元44进一步配置为:将第一分片文件的前一个分片文件的结束索引作为第一开始索引;确定第一结束索引指向第一分界文件块中的行分隔符的位置。
在一些实现中,装置400还可以包括:
获取单元(未示出),配置为获取所述待处理文件的文件大小信息;获取单元,配置为获取所述待处理文件的文件大小信息;以及
检测单元(未示出),配置为基于文件大小信息检测第一分界文件块是否超出待处理文件的文件大小范围;
在超出的情况下,索引数据确定单元44还可以配置为,确定所述第一结束索引指向所述待处理文件的结束位置。
根据一个可能的设计,装置400还可以包括:添加单元(未示出),配置为将第一索引数据添加到用于多个分片文件的索引信息中。
在进一步的实施例中,装置400还可以包括,更新单元(未示出),配置为利用上述索引信息更新云存储服务器中的任务配置表,以供云存储服务器按照任务配置表的分发规则向解析设备集群分发索引信息。
在一些实施例中,装置400还可以包括,调用单元(未示出),配置为将第一索引数据作为传递参数,通过参数调用的方式发送至解析设备集群。
通过以上装置400,可以仅仅从云存储服务器获取起始文件块、至少一个分界文件块,由于选择性地下载部分待处理文件,通过确定各个分片文件的索引信息确定待处理文件的划分方案,而不用下载整个文件并对文件进行真实切割,可以减少耗时,提高文件处理的有效性。
根据另一方面的实施例,还提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行结合图2所描述的方法。
根据再一方面的实施例,还提供一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现结合图2所述的方法。
本领域技术人员应该可以意识到,在上述一个或多个示例中,本发明所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本发明的保护范围之内。