本發(fā)明涉及信息技術(shù),尤其涉及一種文件解析方法和裝置。
背景技術(shù):
在接收到文件之后,需要首先對(duì)文件進(jìn)行解析,以確保文件的準(zhǔn)確性,同時(shí)確保文件在后續(xù)處理中的可識(shí)別性,從而便于后續(xù)對(duì)文件進(jìn)行下一步處理。在解析過程中,可以具體針對(duì)文件中的內(nèi)容或格式進(jìn)行一系列的掃描、校驗(yàn)等操作。
例如:對(duì)于金融業(yè)務(wù),在從外部公司獲取記錄有金融數(shù)據(jù)的文件時(shí),為了保證下一步數(shù)據(jù)處理的準(zhǔn)確性,在對(duì)這些金融數(shù)據(jù)進(jìn)行數(shù)據(jù)處理之前,需要確保文件的格式和字段內(nèi)容的準(zhǔn)確性,因此,要對(duì)從外部公司所獲取到的文件進(jìn)行解析。在解析通過后,再繼續(xù)執(zhí)行相應(yīng)的數(shù)據(jù)處理過程。
目前,大多采用單一進(jìn)程對(duì)所獲取到的文件進(jìn)行解析,在文件的數(shù)據(jù)量較大的情況下,解析的速度較慢,從而不能保證在預(yù)設(shè)時(shí)間點(diǎn)之前完成對(duì)文件的解析,在金融業(yè)務(wù)這類時(shí)效性要求較高的場景下,會(huì)導(dǎo)致后續(xù)業(yè)務(wù)停滯進(jìn)而帶來較為嚴(yán)重的損失。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明提供一種文件解析方法和裝置,用于解決現(xiàn)有技術(shù)中,文件解析速度較慢的技術(shù)問題。
為達(dá)到上述目的,本發(fā)明的實(shí)施例采用如下技術(shù)方案:
第一方面,提供了一種文件解析方法,包括:
將文件劃分為至少兩個(gè)文件片段;
并行對(duì)所述至少兩個(gè)文件片段進(jìn)行解析。
第二方面,提供了一種文件解析裝置,包括:
劃分模塊,用于將文件劃分為至少兩個(gè)文件片段;
解析模塊,用于并行對(duì)所述至少兩個(gè)文件片段進(jìn)行解析。
本發(fā)明實(shí)施例提供的文件解析方法和裝置,通過將文件劃分為至少兩個(gè)文件片段,從而并行對(duì)所劃分得到的至少兩個(gè)文件片段進(jìn)行解析。從而通過這種并行解析的方式,提高了文件的解析速度,解決了文件解析速度較慢的技術(shù)問題,尤其是在文件的數(shù)據(jù)量較大的情況下,能夠確保在預(yù)設(shè)時(shí)間點(diǎn)之前完成文件的解析,在金融業(yè)務(wù)這類時(shí)效性較高的場景下,避免了由于文件解析未完成后續(xù)業(yè)務(wù)停滯所導(dǎo)致的經(jīng)濟(jì)損失。
上述說明僅是本發(fā)明技術(shù)方案的概述,為了能夠更清楚了解本發(fā)明的技術(shù)手段,而可依照說明書的內(nèi)容予以實(shí)施,并且為了讓本發(fā)明的上述和其它目的、特征和優(yōu)點(diǎn)能夠更明顯易懂,以下特舉本發(fā)明的具體實(shí)施方式。
附圖說明
通過閱讀下文優(yōu)選實(shí)施方式的詳細(xì)描述,各種其他的優(yōu)點(diǎn)和益處對(duì)于本領(lǐng)域普通技術(shù)人員將變得清楚明了。附圖僅用于示出優(yōu)選實(shí)施方式的目的,而并不認(rèn)為是對(duì)本發(fā)明的限制。而且在整個(gè)附圖中,用相同的參考符號(hào)表示相同的部件。在附圖中:
圖1為本發(fā)明實(shí)施例一提供的一種文件解析方法的流程示意圖;
圖2為文件解析的場景示意圖;
圖3為文件解析的原理示意圖;
圖4為本發(fā)明實(shí)施例二提供的一種文件解析方法的流程示意圖;
圖5為本發(fā)明實(shí)施例三提供的一種文件解析裝置的結(jié)構(gòu)示意圖;
圖6為本發(fā)明實(shí)施例四提供的一種文件解析裝置的結(jié)構(gòu)示意圖;
圖7為本發(fā)明實(shí)施例五提供的一種文件解析系統(tǒng)的結(jié)構(gòu)示意圖;
圖8為文件解析系統(tǒng)的原理示意圖。
具體實(shí)施方式
下面將參照附圖更詳細(xì)地描述本公開的示例性實(shí)施例。雖然附圖中顯示了本公開的示例性實(shí)施例,然而應(yīng)當(dāng)理解,可以以各種形式實(shí)現(xiàn)本公開而不應(yīng)被這里闡述的實(shí)施例所限制。相反,提供這些實(shí)施例是為了能夠更透徹地理解本公開,并且能夠?qū)⒈竟_的范圍完整的傳達(dá)給本領(lǐng)域的技術(shù)人員。
下面結(jié)合附圖對(duì)本發(fā)明實(shí)施例提供的文件解析方法、裝置和系統(tǒng)進(jìn)行詳細(xì)描述。
實(shí)施例一
圖1為本發(fā)明實(shí)施例一提供的一種文件解析方法的流程示意圖,本實(shí)施例所提供的方法,可以由文件解析系統(tǒng)執(zhí)行,如圖2所示的文件解析的場景示意圖,該文件解析系統(tǒng)可以從外部系統(tǒng)獲取或接收待解析的文件,從而對(duì)其進(jìn)行解析,以便解析完成后由其他業(yè)務(wù)處理系統(tǒng)執(zhí)行業(yè)務(wù)處理流程。具體的,作為一種可能的應(yīng)用場景,該文件解析系統(tǒng)運(yùn)行在分布式的集群中,或者,作為另一種可能的應(yīng)用場景,該文件解析系統(tǒng)運(yùn)行在單機(jī)中,本實(shí)施例中對(duì)此不做限定。
如圖1所示,文件解析方法包括:
步驟101、將文件劃分為至少兩個(gè)文件片段。
具體的,對(duì)文件進(jìn)行劃分時(shí),可以根據(jù)預(yù)設(shè)的劃分策略將文件劃分為多個(gè)文件片段。由于這里的文件劃分是對(duì)構(gòu)成文件的字節(jié)所進(jìn)行的劃分,因此在進(jìn)行劃分之前,還需要根據(jù)文件的類型,確定該類型文件的最小劃分單元,采用該最小劃分單元對(duì)文件進(jìn)行劃分,避免將一個(gè)最小劃分單元中各部分的字節(jié)劃分在不同的文件片段中,導(dǎo)致無法進(jìn)行文件解析??梢?,這里確定最小劃分單元時(shí),需參考后續(xù)文件解析時(shí)所能夠?qū)γ恳活愋臀募M(jìn)行解析的最小單元進(jìn)行確定。
例如:對(duì)于文檔類型的文件,最小劃分單元可以為語句或者段落或者是頁;而對(duì)于表格類型的文件,最小劃分單元可以為單元格,或者為行,或者為列。
其中,對(duì)于劃分策略來說,可以根據(jù)文件片段的預(yù)設(shè)數(shù)據(jù)量,或者是根據(jù)文件片段的預(yù)設(shè)數(shù)量對(duì)文件進(jìn)行劃分,從而得到多個(gè)文件片段。
例如:可以將文件劃分為固定的100個(gè)文件片段,每個(gè)文件片段的數(shù)據(jù)量約占文件的數(shù)據(jù)量的1%。又例如:還可以在劃分時(shí),確保每一個(gè)文件片段的數(shù)據(jù)量約為固定的數(shù)據(jù)量,但文件片段的數(shù)量是不確定的,需要根據(jù)文件的數(shù)據(jù)量進(jìn)行調(diào)整。
步驟102、并行對(duì)至少兩個(gè)文件片段進(jìn)行解析。
具體的,根據(jù)各文件片段在文件中的位置,生成各解析任務(wù),將各解析任務(wù)調(diào)度到至少兩個(gè)進(jìn)程中的對(duì)應(yīng)進(jìn)程。由至少兩個(gè)進(jìn)程并行執(zhí)行調(diào)度獲得的解析任務(wù)。
作為一種可能的實(shí)現(xiàn)方式,在由至少兩個(gè)進(jìn)程并行執(zhí)行調(diào)度獲得的解析任務(wù)時(shí),可以針對(duì)每一個(gè)進(jìn)程,根據(jù)調(diào)度獲得的解析任務(wù)中所記錄的位置,從文件中讀取得到對(duì)應(yīng)的文件片段。其中,解析任務(wù)中所記錄的位置可以為文件片段的第一個(gè)和最后一個(gè)字節(jié)在文件中的相對(duì)位置。當(dāng)解析任務(wù)指示對(duì)文件片段執(zhí)行校驗(yàn)操作時(shí),由該進(jìn)程根據(jù)預(yù)先配置的校驗(yàn)規(guī)則,對(duì)所讀取到的文件片段進(jìn)行校驗(yàn)操作,其中,校驗(yàn)規(guī)則具體用于校驗(yàn)預(yù)設(shè)行或列中的文字是否符合一定的格式,或者數(shù)字是否符合一定的取值范圍,某個(gè)單元格中的取值是否為空等。
需要說明的是,對(duì)于解析這一過程具體可以包括校驗(yàn)、格式轉(zhuǎn)換、掃描等一系列操作的一個(gè)或多個(gè)組合,本實(shí)施例中的校驗(yàn)操作僅作為一種示意性說明,不構(gòu)成對(duì)本發(fā)明實(shí)施例的限制。
可見,如圖3所示,通過將文件劃分為至少兩個(gè)文件片段,從而并行對(duì)所劃分得到的至少兩個(gè)文件片段進(jìn)行解析。從而通過這種并行解析的方式,提高了文件的解析速度,解決了文件解析速度較慢的技術(shù)問題,尤其是在文件的數(shù)據(jù)量較大的情況下,能夠確保在預(yù)設(shè)時(shí)間點(diǎn)之前完成文件的解析。
實(shí)施例二
圖4為本發(fā)明實(shí)施例二提供的一種文件解析方法的流程示意圖,本實(shí)施例所提供的方法可以由圖2所提供的文件解析系統(tǒng)執(zhí)行,用于針對(duì)金融類常用的報(bào)表文件進(jìn)行解析,也就是說,本實(shí)施例中的文件的類型均為表格。如圖4所示,方法包括:
步驟201、當(dāng)接收到文件通知時(shí),獲取文件。
具體的,當(dāng)接收到文件通知時(shí),從外部系統(tǒng)獲取已生成的文件,將文件存儲(chǔ)在內(nèi)存中。
步驟202、對(duì)所獲取到的文件進(jìn)行掃描。
具體的,對(duì)內(nèi)存中的文件進(jìn)行掃描,包括字節(jié)掃描和哈希掃描。其中,字節(jié)掃描用于確定文件的數(shù)據(jù)量,而哈希掃描用于確定文件的校驗(yàn)碼,該校驗(yàn)碼用于判讀文件在傳輸過程中是否存在損壞,從而確定文件未損壞時(shí),執(zhí)行下一步驟,否則重新從外部系統(tǒng)獲取文件。在完成掃描后,能夠得到文件的數(shù)據(jù)量等屬性信息。
步驟203、將文件劃分為預(yù)設(shè)數(shù)量的文件片段,得到各個(gè)文件片段在文件中的位置。
其中,位置具體為文件片段的第一個(gè)字節(jié)在文件中的相對(duì)位置和最后一個(gè)字節(jié)在文件中的相對(duì)位置。例如:可以為文件片段中的第一個(gè)和最后一個(gè)字節(jié)在文件中分別為第幾個(gè)字節(jié),還可以為文件片段中的第一個(gè)和最后一個(gè)字節(jié)在文件所存儲(chǔ)區(qū)域中的存儲(chǔ)位置。
具體的,本實(shí)施例中的文件為表格類型,從而可以以單元格為最小劃分單元,將文件劃分為預(yù)設(shè)數(shù)量的文件片段,各個(gè)文件片段之間具有大致相等的數(shù)據(jù)量。
例如:固定將文件劃分為100個(gè)文件片段,每一個(gè)文件片段的數(shù)據(jù)量約占文件的總數(shù)據(jù)量的1%。每一個(gè)文件片段對(duì)應(yīng)報(bào)表文件中固定的若干個(gè)單元格,且各個(gè)文件片段所對(duì)應(yīng)的單元格能夠構(gòu)成完整的報(bào)表文件。
步驟204、針對(duì)每一個(gè)文件片段生成一個(gè)解析任務(wù)。
具體的,解析任務(wù)中包括:文件片段的第一個(gè)字節(jié)在文件中的相對(duì)位置和最后一個(gè)字節(jié)在文件中的相對(duì)位置,文件片段的數(shù)據(jù)量。還可以根據(jù)文件片段對(duì)解析任務(wù)進(jìn)行標(biāo)識(shí),從而便于將解析任務(wù)調(diào)度至文件片段對(duì)應(yīng)的進(jìn)程。
步驟205、將解析任務(wù)調(diào)度到對(duì)應(yīng)的進(jìn)程。
具體的,可以預(yù)設(shè)各個(gè)文件片段與進(jìn)程之間的對(duì)應(yīng)關(guān)系,從而根據(jù)解析任務(wù)的標(biāo)識(shí)所指示的文件片段,確定對(duì)應(yīng)的進(jìn)程,將該解析任務(wù)調(diào)度至對(duì)應(yīng)的進(jìn)程進(jìn)行解析。
步驟206、由各進(jìn)程并行執(zhí)行解析任務(wù)。
具體的,預(yù)先為每一個(gè)進(jìn)程配置了對(duì)應(yīng)的校驗(yàn)規(guī)則,這個(gè)校驗(yàn)規(guī)則指示了對(duì)該文件片段中的各行各列所需校驗(yàn)的格式或數(shù)據(jù)。比如校驗(yàn)規(guī)則包括:文件片段中的第一列應(yīng)為文字,文件片段中的第二列應(yīng)為數(shù)值且不得為空等。
從而每一個(gè)進(jìn)程均存在至少一個(gè)對(duì)應(yīng)的校驗(yàn)規(guī)則,且各個(gè)進(jìn)程之間,校驗(yàn)規(guī)則可能是不同的。
步驟207、生成解析結(jié)果,判斷解析結(jié)果是否為成功,若成功則進(jìn)行業(yè)務(wù)處理,否則指示導(dǎo)致解析失敗的文件片段以提示人工處理。
若至少一個(gè)進(jìn)程的校驗(yàn)結(jié)果為未通過,則確定文件解析失敗。若全部進(jìn)程的校驗(yàn)結(jié)果均為通過時(shí),則確定文件解析成功。
在文件解析失敗時(shí),定位解析失敗的文件片段在文件中的位置,甚至還可以定位校驗(yàn)失敗的單元格在文件中的位置,從而在解析結(jié)果中包括指示校驗(yàn)失敗的文件片段和/或單元格在文件中的位置。
這是由于,在實(shí)際應(yīng)用中文件的數(shù)據(jù)量較大,若僅獲知文件解析失敗,而無法對(duì)存在問題導(dǎo)致解析失敗的位置進(jìn)行定位時(shí),需要在人工處理時(shí)對(duì)整個(gè)文件進(jìn)行修正,對(duì)文件進(jìn)行修正的任務(wù)量較大,若能夠根據(jù)校驗(yàn)失敗的進(jìn)程所解析的文件片段,查詢?cè)撐募卧谖募械奈恢茫M(jìn)而再根據(jù)該進(jìn)程所記錄的解析失敗的單元格在文件片段中的位置,則能夠確定出具體導(dǎo)致解析失敗的單元格在文件中的位置,可以僅對(duì)該單元格進(jìn)行修正,大大減少了對(duì)文件進(jìn)行修正的任務(wù)量。
實(shí)施例三
圖5為本發(fā)明實(shí)施例三提供的一種文件解析裝置的結(jié)構(gòu)示意圖,如圖5所示,包括:劃分模塊31和解析模塊32。
劃分模塊31,用于將文件劃分為至少兩個(gè)文件片段。
具體的,劃分模塊31,具體用于根據(jù)所述文件的類型確定所述文件的最小劃分單元;采用所述最小劃分單元對(duì)所述文件進(jìn)行劃分。
解析模塊32,用于并行對(duì)所述至少兩個(gè)文件片段進(jìn)行解析。
通過劃分模塊31將文件劃分為至少兩個(gè)文件片段,從而解析模塊32并行對(duì)所劃分得到的至少兩個(gè)文件片段進(jìn)行解析。從而通過這種并行解析的方式,提高了文件的解析速度,解決了文件解析速度較慢的技術(shù)問題,尤其是在文件的數(shù)據(jù)量較大的情況下,能夠確保在預(yù)設(shè)時(shí)間點(diǎn)之前完成文件的解析,在金融業(yè)務(wù)這類時(shí)效性較高的場景下,避免了由于文件解析未完成后續(xù)業(yè)務(wù)停滯所導(dǎo)致的經(jīng)濟(jì)損失。
本實(shí)施例所提供的文件解析裝置,具體用于執(zhí)行實(shí)施例一所提供的文件解析方法,具體功能模塊的實(shí)現(xiàn)參見前述實(shí)施例中的相關(guān)描述,本實(shí)施例中對(duì)此不再贅述。
實(shí)施例四
為了清楚說明本發(fā)明實(shí)施例三所提供的文件解析裝置,圖6為本發(fā)明實(shí)施例四提供的一種文件解析裝置的結(jié)構(gòu)示意圖,在圖5的基礎(chǔ)上,作為一種可能的實(shí)現(xiàn)方式,如圖6所示劃分模塊31包括:第一劃分單元311和第二劃分單元312。
第一劃分單元311,用于根據(jù)預(yù)設(shè)數(shù)據(jù)量,對(duì)所述文件進(jìn)行劃分,以得到符合所述預(yù)設(shè)數(shù)據(jù)量的文件片段。
第二劃分單元312,用于根據(jù)預(yù)設(shè)數(shù)量,對(duì)所述文件進(jìn)行劃分,以得到符合所述預(yù)設(shè)數(shù)量的文件片段。
需要說明的是,本實(shí)施例中的文件解析裝置中,劃分模塊31可以包括第一劃分單元311和/或第二劃分單元312,圖6僅作為一種可能的實(shí)現(xiàn)方式的示意,不構(gòu)成對(duì)本發(fā)明實(shí)施例的限制。
進(jìn)一步,解析模塊32包括:生成單元321,調(diào)度單元322和執(zhí)行單元323。
生成單元321,用于根據(jù)各文件片段在所述文件中的位置,生成各解析任務(wù)。
調(diào)度單元322,用于將各解析任務(wù)調(diào)度到至少兩個(gè)進(jìn)程中的對(duì)應(yīng)進(jìn)程。
執(zhí)行單元323,用于由所述至少兩個(gè)進(jìn)程并行執(zhí)行調(diào)度獲得的解析任務(wù)。
其中,執(zhí)行單元323包括:讀取子單元3231和解析子單元3232。
讀取子單元3231,用于針對(duì)每一個(gè)進(jìn)程,根據(jù)調(diào)度獲得的解析任務(wù)中所記錄的位置,從所述文件中讀取得到對(duì)應(yīng)的文件片段。
解析子單元3232,用于對(duì)所讀取到的文件片段進(jìn)行解析。
作為一種可能的實(shí)現(xiàn)方式,解析任務(wù)用于對(duì)所述文件片段進(jìn)行校驗(yàn)操作,基于此,解析子單元3232,具體用于根據(jù)對(duì)所述進(jìn)程所預(yù)先配置的校驗(yàn)規(guī)則,對(duì)所讀取到的文件片段進(jìn)行校驗(yàn)。
進(jìn)一步,文件解析裝置還包括:掃描模塊33,結(jié)果模塊34和定位模塊35。
掃描模塊33,用于對(duì)所述文件進(jìn)行掃描操作,以確定所述文件已成功接收。
結(jié)果模塊34,用于當(dāng)所述至少兩個(gè)文件片段中的至少一個(gè)解析失敗時(shí),確定所述文件解析失敗。
定位模塊35,用于定位解析失敗的文件片段在所述文件中的位置。
本實(shí)施例所提供的文件解析裝置,具體用于執(zhí)行實(shí)施例一和二所提供的文件解析方法,具體功能模塊的實(shí)現(xiàn)參見前述實(shí)施例中的相關(guān)描述,本實(shí)施例中對(duì)此不再贅述。
實(shí)施例五
圖7為本發(fā)明實(shí)施例五提供的一種文件解析系統(tǒng)的結(jié)構(gòu)示意圖,該文件解析系統(tǒng)運(yùn)行在分布式的集群中,如圖7所示,該文件解析系統(tǒng)的架構(gòu)包括前置分塊層、調(diào)度層和任務(wù)解析層。
前置分塊層上運(yùn)行有至少一臺(tái)前置分塊服務(wù)器,調(diào)度層上運(yùn)行有至少一臺(tái)調(diào)度服務(wù)器和任務(wù)解析層上運(yùn)行有多臺(tái)任務(wù)解析服務(wù)器。
其中,前置分塊服務(wù)器用于將文件劃分為至少兩個(gè)文件片段。
調(diào)度服務(wù)器的臺(tái)數(shù)可以為一臺(tái)或多臺(tái),不同的調(diào)度服務(wù)器可以運(yùn)行于不同的集群內(nèi),每臺(tái)調(diào)度服務(wù)器調(diào)度其所在集群中的任務(wù)解析服務(wù)器執(zhí)行解析任務(wù)。
具體的,當(dāng)調(diào)度層僅含一臺(tái)調(diào)度服務(wù)器時(shí),前置分塊層將全部的待解析的文件片段發(fā)送給該調(diào)度服務(wù)器,由其根據(jù)這些文件片段生成解析任務(wù)并對(duì)解析任務(wù)進(jìn)行調(diào)度;而當(dāng)調(diào)度層包含兩臺(tái)或更多臺(tái)調(diào)度服務(wù)器時(shí),兩臺(tái)或更多臺(tái)調(diào)度服務(wù)器之間需要首先執(zhí)行一次調(diào)度,確定每臺(tái)調(diào)度服務(wù)器所需處理的文件片段并發(fā)送至對(duì)應(yīng)的調(diào)度服務(wù)器,然后再由每臺(tái)調(diào)度服務(wù)器對(duì)各自所接收到的文件片段進(jìn)行包括生成解析任務(wù)以及對(duì)解析任務(wù)進(jìn)行調(diào)度在內(nèi)的處理??梢?,當(dāng)調(diào)度層僅含一臺(tái)調(diào)度服務(wù)器時(shí)對(duì)于文件片段為一次分發(fā),當(dāng)調(diào)度層包含至少兩臺(tái)調(diào)度服務(wù)器時(shí)為二次分發(fā)。
為了清楚說明文件解析系統(tǒng)的運(yùn)行,圖8為文件解析系統(tǒng)的原理示意圖,如圖8所示,包括:
步驟501、外部系統(tǒng)生成文件之后,向文件解析系統(tǒng)發(fā)送文件到達(dá)的通知消息。
步驟502、文件解析系統(tǒng)的前置分塊層獲取當(dāng)前的劃分策略,根據(jù)當(dāng)前的劃分策略對(duì)文件進(jìn)行劃分,得到各文件片段。
具體的,對(duì)文件進(jìn)行劃分時(shí),可以根據(jù)預(yù)設(shè)的劃分策略將文件劃分為多個(gè)文件片段。由于這里的文件劃分是對(duì)構(gòu)成文件的字節(jié)所進(jìn)行的劃分,因此在進(jìn)行劃分之前,還需要根據(jù)文件的類型,確定該類型文件的最小劃分單元,采用該最小劃分單元對(duì)文件進(jìn)行劃分,避免將一個(gè)最小劃分單元中各部分的字節(jié)劃分在不同的文件片段中,導(dǎo)致無法進(jìn)行文件解析。可見,這里確定最小劃分單元時(shí),需參考后續(xù)文件解析時(shí)所能夠?qū)γ恳活愋臀募M(jìn)行解析的最小單元進(jìn)行確定。
例如:對(duì)于文檔類型的文件,最小劃分單元可以為語句或者段落或者是頁;而對(duì)于表格類型的文件,最小劃分單元可以為單元格,或者為行,或者為列。
其中,對(duì)于劃分策略來說,可以根據(jù)文件片段的預(yù)設(shè)數(shù)據(jù)量,或者是根據(jù)文件片段的預(yù)設(shè)數(shù)量對(duì)文件進(jìn)行劃分,從而得到多個(gè)文件片段。
步驟503、前置分塊層記錄各文件片段的第一個(gè)和最后一個(gè)字節(jié)在文件中的相對(duì)位置,得到節(jié)點(diǎn)記錄。
步驟504、對(duì)文件的內(nèi)容和節(jié)點(diǎn)記錄進(jìn)行存儲(chǔ),將所存儲(chǔ)的文件的內(nèi)容和節(jié)點(diǎn)記錄發(fā)送至分發(fā)調(diào)度層。
步驟505、分發(fā)調(diào)度層根據(jù)節(jié)點(diǎn)記錄,對(duì)文件的各文件片段進(jìn)行分塊存儲(chǔ)。
具體的,分發(fā)調(diào)度層讀取節(jié)點(diǎn)記錄中所記錄的字節(jié),根據(jù)所記錄的字節(jié)確定文件的各文件片段的第一個(gè)字節(jié)和最后一個(gè)字節(jié),從而確定出各文件片段的內(nèi)容,對(duì)所確定出的各文件片段進(jìn)行分塊存儲(chǔ)。
作為一種可能的實(shí)現(xiàn)方式,每一個(gè)文件片段可以存儲(chǔ)在一個(gè)物理存儲(chǔ)分塊上,在這個(gè)物理存儲(chǔ)分塊上有且只存儲(chǔ)有這一個(gè)文件片段。
作為另一種可能的實(shí)現(xiàn)方式,在存儲(chǔ)空間不足時(shí),可以將不同的文件片段存儲(chǔ)在同一個(gè)物理存儲(chǔ)分塊上,進(jìn)一步,可以采用能夠用于區(qū)分的特殊字節(jié),在兩個(gè)文件片段之間進(jìn)行分隔。
步驟506、分發(fā)調(diào)度層根據(jù)每一個(gè)文件片段的存儲(chǔ)位置,生成解析任務(wù)。
其中,每一個(gè)解析任務(wù)與一個(gè)存儲(chǔ)分塊相對(duì)應(yīng),解析任務(wù)中可以記錄有該文件片段的第一個(gè)字節(jié)和最后一個(gè)字節(jié)。
步驟507、分發(fā)調(diào)度層將各解析任務(wù)調(diào)度至任務(wù)解析層中對(duì)應(yīng)的任務(wù)解析服務(wù)器,以使任務(wù)解析服務(wù)器執(zhí)行該解析任務(wù)從而對(duì)文件片段進(jìn)行解析。
具體的,分發(fā)調(diào)度層可以采用預(yù)設(shè)的調(diào)度策略進(jìn)行調(diào)度,并將解析任務(wù)發(fā)送至對(duì)應(yīng)的任務(wù)解析服務(wù)器。例如:調(diào)度策略可以為預(yù)設(shè)解析任務(wù)和任務(wù)解析服務(wù)器之間的對(duì)應(yīng)關(guān)系,還可以為負(fù)載均衡等。
步驟508、分發(fā)調(diào)度層中各任務(wù)解析服務(wù)器根據(jù)所接收到的解析任務(wù),從對(duì)應(yīng)的存儲(chǔ)分塊中讀取文件片段。
步驟509、分發(fā)調(diào)度層中各任務(wù)解析服務(wù)器對(duì)文件片段進(jìn)行解析。
當(dāng)解析任務(wù)指示對(duì)文件片段執(zhí)行校驗(yàn)操作時(shí),根據(jù)預(yù)先配置的校驗(yàn)規(guī)則,對(duì)所讀取到的文件片段進(jìn)行校驗(yàn)操作,其中,校驗(yàn)規(guī)則具體用于校驗(yàn)預(yù)設(shè)行或列中的文字是否符合一定的格式,或者數(shù)字是否符合一定的取值范圍,某個(gè)單元格中的取值是否為空等。
步驟510、分發(fā)調(diào)度層中各任務(wù)解析服務(wù)器向分發(fā)調(diào)度層返回解析結(jié)果。
其中,解析結(jié)果中,包括針對(duì)問價(jià)片段解析成功或者失敗的指示信息。
步驟511、分發(fā)調(diào)度層對(duì)所接收到的解析結(jié)果進(jìn)行匯總。
若至少一個(gè)解析結(jié)果為未通過,則確定文件解析失敗。若全部解析結(jié)果均為通過時(shí),則確定文件解析成功。
在文件解析失敗時(shí),定位解析失敗的文件片段在文件中的位置,具體可以通過根據(jù)發(fā)送解析失敗的解析結(jié)果的任務(wù)解析服務(wù)器,查詢其在調(diào)度時(shí)所調(diào)度到對(duì)應(yīng)哪一個(gè)文件片段的解析任務(wù),從而確定文件中的該文件片段解析失敗。
步驟512、分發(fā)調(diào)度層向前置分塊層返回匯總結(jié)果。
在上一步驟中,由于分發(fā)調(diào)度層針對(duì)每一個(gè)文件片段進(jìn)行存儲(chǔ),從而可以獲知該文件片段的存儲(chǔ)位置和內(nèi)容,從而在匯總結(jié)果為解析失敗時(shí),可以在匯總結(jié)果中攜帶導(dǎo)致解析失敗的文件片段的內(nèi)容,或者,例如在文件中的相對(duì)位置等標(biāo)識(shí)。
從而使得前置分塊層能夠根據(jù)匯總結(jié)果,確定對(duì)該文件繼續(xù)后續(xù)處理。例如:當(dāng)匯總結(jié)果指示文件解析成功時(shí),通知對(duì)該文件進(jìn)行業(yè)務(wù)處理的業(yè)務(wù)處理系統(tǒng)執(zhí)行數(shù)據(jù)處理流程;當(dāng)匯總結(jié)果指示文件解析失敗時(shí),請(qǐng)求人工處理。
本實(shí)施例中,通過將文件劃分為至少兩個(gè)文件片段,從而并行對(duì)所劃分得到的至少兩個(gè)文件片段進(jìn)行解析。從而通過這種并行解析的方式,提高了文件的解析速度,解決了文件解析速度較慢的技術(shù)問題,尤其是在文件的數(shù)據(jù)量較大的情況下,能夠確保在預(yù)設(shè)時(shí)間點(diǎn)之前完成文件的解析。
本領(lǐng)域普通技術(shù)人員可以理解:實(shí)現(xiàn)上述各方法實(shí)施例的全部或部分步驟可以通過程序指令相關(guān)的硬件來完成。前述的程序可以存儲(chǔ)于一計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中。該程序在執(zhí)行時(shí),執(zhí)行包括上述各方法實(shí)施例的步驟;而前述的存儲(chǔ)介質(zhì)包括:rom、ram、磁碟或者光盤等各種可以存儲(chǔ)程序代碼的介質(zhì)。
最后應(yīng)說明的是:以上各實(shí)施例僅用以說明本發(fā)明的技術(shù)方案,而非對(duì)其限制;盡管參照前述各實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對(duì)前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對(duì)其中部分或者全部技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實(shí)施例技術(shù)方案的范圍。