亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

文件解析方法和裝置與流程

文檔序號:12802166閱讀:370來源:國知局
文件解析方法和裝置與流程

本發(fā)明涉及信息技術,尤其涉及一種文件解析方法和裝置。



背景技術:

在接收到文件之后,需要首先對文件進行解析,以確保文件的準確性,同時確保文件在后續(xù)處理中的可識別性,從而便于后續(xù)對文件進行下一步處理。在解析過程中,可以具體針對文件中的內容或格式進行一系列的掃描、校驗等操作。

例如:對于金融業(yè)務,在從外部公司獲取記錄有金融數據的文件時,為了保證下一步數據處理的準確性,在對這些金融數據進行數據處理之前,需要確保文件的格式和字段內容的準確性,因此,要對從外部公司所獲取到的文件進行解析。在解析通過后,再繼續(xù)執(zhí)行相應的數據處理過程。

目前,大多采用單一進程對所獲取到的文件進行解析,在文件的數據量較大的情況下,解析的速度較慢,從而不能保證在預設時間點之前完成對文件的解析,在金融業(yè)務這類時效性要求較高的場景下,會導致后續(xù)業(yè)務停滯進而帶來較為嚴重的損失。



技術實現要素:

本發(fā)明提供一種文件解析方法和裝置,用于解決現有技術中,文件解析速度較慢的技術問題。

為達到上述目的,本發(fā)明的實施例采用如下技術方案:

第一方面,提供了一種文件解析方法,包括:

將文件劃分為至少兩個文件片段;

并行對所述至少兩個文件片段進行解析。

第二方面,提供了一種文件解析裝置,包括:

劃分模塊,用于將文件劃分為至少兩個文件片段;

解析模塊,用于并行對所述至少兩個文件片段進行解析。

本發(fā)明實施例提供的文件解析方法和裝置,通過將文件劃分為至少兩個文件片段,從而并行對所劃分得到的至少兩個文件片段進行解析。從而通過這種并行解析的方式,提高了文件的解析速度,解決了文件解析速度較慢的技術問題,尤其是在文件的數據量較大的情況下,能夠確保在預設時間點之前完成文件的解析,在金融業(yè)務這類時效性較高的場景下,避免了由于文件解析未完成后續(xù)業(yè)務停滯所導致的經濟損失。

上述說明僅是本發(fā)明技術方案的概述,為了能夠更清楚了解本發(fā)明的技術手段,而可依照說明書的內容予以實施,并且為了讓本發(fā)明的上述和其它目的、特征和優(yōu)點能夠更明顯易懂,以下特舉本發(fā)明的具體實施方式。

附圖說明

通過閱讀下文優(yōu)選實施方式的詳細描述,各種其他的優(yōu)點和益處對于本領域普通技術人員將變得清楚明了。附圖僅用于示出優(yōu)選實施方式的目的,而并不認為是對本發(fā)明的限制。而且在整個附圖中,用相同的參考符號表示相同的部件。在附圖中:

圖1為本發(fā)明實施例一提供的一種文件解析方法的流程示意圖;

圖2為文件解析的場景示意圖;

圖3為文件解析的原理示意圖;

圖4為本發(fā)明實施例二提供的一種文件解析方法的流程示意圖;

圖5為本發(fā)明實施例三提供的一種文件解析裝置的結構示意圖;

圖6為本發(fā)明實施例四提供的一種文件解析裝置的結構示意圖;

圖7為本發(fā)明實施例五提供的一種文件解析系統的結構示意圖;

圖8為文件解析系統的原理示意圖。

具體實施方式

下面將參照附圖更詳細地描述本公開的示例性實施例。雖然附圖中顯示了本公開的示例性實施例,然而應當理解,可以以各種形式實現本公開而不應被這里闡述的實施例所限制。相反,提供這些實施例是為了能夠更透徹地理解本公開,并且能夠將本公開的范圍完整的傳達給本領域的技術人員。

下面結合附圖對本發(fā)明實施例提供的文件解析方法、裝置和系統進行詳細描述。

實施例一

圖1為本發(fā)明實施例一提供的一種文件解析方法的流程示意圖,本實施例所提供的方法,可以由文件解析系統執(zhí)行,如圖2所示的文件解析的場景示意圖,該文件解析系統可以從外部系統獲取或接收待解析的文件,從而對其進行解析,以便解析完成后由其他業(yè)務處理系統執(zhí)行業(yè)務處理流程。具體的,作為一種可能的應用場景,該文件解析系統運行在分布式的集群中,或者,作為另一種可能的應用場景,該文件解析系統運行在單機中,本實施例中對此不做限定。

如圖1所示,文件解析方法包括:

步驟101、將文件劃分為至少兩個文件片段。

具體的,對文件進行劃分時,可以根據預設的劃分策略將文件劃分為多個文件片段。由于這里的文件劃分是對構成文件的字節(jié)所進行的劃分,因此在進行劃分之前,還需要根據文件的類型,確定該類型文件的最小劃分單元,采用該最小劃分單元對文件進行劃分,避免將一個最小劃分單元中各部分的字節(jié)劃分在不同的文件片段中,導致無法進行文件解析。可見,這里確定最小劃分單元時,需參考后續(xù)文件解析時所能夠對每一類型文件進行解析的最小單元進行確定。

例如:對于文檔類型的文件,最小劃分單元可以為語句或者段落或者是頁;而對于表格類型的文件,最小劃分單元可以為單元格,或者為行,或者為列。

其中,對于劃分策略來說,可以根據文件片段的預設數據量,或者是根據文件片段的預設數量對文件進行劃分,從而得到多個文件片段。

例如:可以將文件劃分為固定的100個文件片段,每個文件片段的數據量約占文件的數據量的1%。又例如:還可以在劃分時,確保每一個文件片段的數據量約為固定的數據量,但文件片段的數量是不確定的,需要根據文件的數據量進行調整。

步驟102、并行對至少兩個文件片段進行解析。

具體的,根據各文件片段在文件中的位置,生成各解析任務,將各解析任務調度到至少兩個進程中的對應進程。由至少兩個進程并行執(zhí)行調度獲得的解析任務。

作為一種可能的實現方式,在由至少兩個進程并行執(zhí)行調度獲得的解析任務時,可以針對每一個進程,根據調度獲得的解析任務中所記錄的位置,從文件中讀取得到對應的文件片段。其中,解析任務中所記錄的位置可以為文件片段的第一個和最后一個字節(jié)在文件中的相對位置。當解析任務指示對文件片段執(zhí)行校驗操作時,由該進程根據預先配置的校驗規(guī)則,對所讀取到的文件片段進行校驗操作,其中,校驗規(guī)則具體用于校驗預設行或列中的文字是否符合一定的格式,或者數字是否符合一定的取值范圍,某個單元格中的取值是否為空等。

需要說明的是,對于解析這一過程具體可以包括校驗、格式轉換、掃描等一系列操作的一個或多個組合,本實施例中的校驗操作僅作為一種示意性說明,不構成對本發(fā)明實施例的限制。

可見,如圖3所示,通過將文件劃分為至少兩個文件片段,從而并行對所劃分得到的至少兩個文件片段進行解析。從而通過這種并行解析的方式,提高了文件的解析速度,解決了文件解析速度較慢的技術問題,尤其是在文件的數據量較大的情況下,能夠確保在預設時間點之前完成文件的解析。

實施例二

圖4為本發(fā)明實施例二提供的一種文件解析方法的流程示意圖,本實施例所提供的方法可以由圖2所提供的文件解析系統執(zhí)行,用于針對金融類常用的報表文件進行解析,也就是說,本實施例中的文件的類型均為表格。如圖4所示,方法包括:

步驟201、當接收到文件通知時,獲取文件。

具體的,當接收到文件通知時,從外部系統獲取已生成的文件,將文件存儲在內存中。

步驟202、對所獲取到的文件進行掃描。

具體的,對內存中的文件進行掃描,包括字節(jié)掃描和哈希掃描。其中,字節(jié)掃描用于確定文件的數據量,而哈希掃描用于確定文件的校驗碼,該校驗碼用于判讀文件在傳輸過程中是否存在損壞,從而確定文件未損壞時,執(zhí)行下一步驟,否則重新從外部系統獲取文件。在完成掃描后,能夠得到文件的數據量等屬性信息。

步驟203、將文件劃分為預設數量的文件片段,得到各個文件片段在文件中的位置。

其中,位置具體為文件片段的第一個字節(jié)在文件中的相對位置和最后一個字節(jié)在文件中的相對位置。例如:可以為文件片段中的第一個和最后一個字節(jié)在文件中分別為第幾個字節(jié),還可以為文件片段中的第一個和最后一個字節(jié)在文件所存儲區(qū)域中的存儲位置。

具體的,本實施例中的文件為表格類型,從而可以以單元格為最小劃分單元,將文件劃分為預設數量的文件片段,各個文件片段之間具有大致相等的數據量。

例如:固定將文件劃分為100個文件片段,每一個文件片段的數據量約占文件的總數據量的1%。每一個文件片段對應報表文件中固定的若干個單元格,且各個文件片段所對應的單元格能夠構成完整的報表文件。

步驟204、針對每一個文件片段生成一個解析任務。

具體的,解析任務中包括:文件片段的第一個字節(jié)在文件中的相對位置和最后一個字節(jié)在文件中的相對位置,文件片段的數據量。還可以根據文件片段對解析任務進行標識,從而便于將解析任務調度至文件片段對應的進程。

步驟205、將解析任務調度到對應的進程。

具體的,可以預設各個文件片段與進程之間的對應關系,從而根據解析任務的標識所指示的文件片段,確定對應的進程,將該解析任務調度至對應的進程進行解析。

步驟206、由各進程并行執(zhí)行解析任務。

具體的,預先為每一個進程配置了對應的校驗規(guī)則,這個校驗規(guī)則指示了對該文件片段中的各行各列所需校驗的格式或數據。比如校驗規(guī)則包括:文件片段中的第一列應為文字,文件片段中的第二列應為數值且不得為空等。

從而每一個進程均存在至少一個對應的校驗規(guī)則,且各個進程之間,校驗規(guī)則可能是不同的。

步驟207、生成解析結果,判斷解析結果是否為成功,若成功則進行業(yè)務處理,否則指示導致解析失敗的文件片段以提示人工處理。

若至少一個進程的校驗結果為未通過,則確定文件解析失敗。若全部進程的校驗結果均為通過時,則確定文件解析成功。

在文件解析失敗時,定位解析失敗的文件片段在文件中的位置,甚至還可以定位校驗失敗的單元格在文件中的位置,從而在解析結果中包括指示校驗失敗的文件片段和/或單元格在文件中的位置。

這是由于,在實際應用中文件的數據量較大,若僅獲知文件解析失敗,而無法對存在問題導致解析失敗的位置進行定位時,需要在人工處理時對整個文件進行修正,對文件進行修正的任務量較大,若能夠根據校驗失敗的進程所解析的文件片段,查詢該文件片段在文件中的位置,進而再根據該進程所記錄的解析失敗的單元格在文件片段中的位置,則能夠確定出具體導致解析失敗的單元格在文件中的位置,可以僅對該單元格進行修正,大大減少了對文件進行修正的任務量。

實施例三

圖5為本發(fā)明實施例三提供的一種文件解析裝置的結構示意圖,如圖5所示,包括:劃分模塊31和解析模塊32。

劃分模塊31,用于將文件劃分為至少兩個文件片段。

具體的,劃分模塊31,具體用于根據所述文件的類型確定所述文件的最小劃分單元;采用所述最小劃分單元對所述文件進行劃分。

解析模塊32,用于并行對所述至少兩個文件片段進行解析。

通過劃分模塊31將文件劃分為至少兩個文件片段,從而解析模塊32并行對所劃分得到的至少兩個文件片段進行解析。從而通過這種并行解析的方式,提高了文件的解析速度,解決了文件解析速度較慢的技術問題,尤其是在文件的數據量較大的情況下,能夠確保在預設時間點之前完成文件的解析,在金融業(yè)務這類時效性較高的場景下,避免了由于文件解析未完成后續(xù)業(yè)務停滯所導致的經濟損失。

本實施例所提供的文件解析裝置,具體用于執(zhí)行實施例一所提供的文件解析方法,具體功能模塊的實現參見前述實施例中的相關描述,本實施例中對此不再贅述。

實施例四

為了清楚說明本發(fā)明實施例三所提供的文件解析裝置,圖6為本發(fā)明實施例四提供的一種文件解析裝置的結構示意圖,在圖5的基礎上,作為一種可能的實現方式,如圖6所示劃分模塊31包括:第一劃分單元311和第二劃分單元312。

第一劃分單元311,用于根據預設數據量,對所述文件進行劃分,以得到符合所述預設數據量的文件片段。

第二劃分單元312,用于根據預設數量,對所述文件進行劃分,以得到符合所述預設數量的文件片段。

需要說明的是,本實施例中的文件解析裝置中,劃分模塊31可以包括第一劃分單元311和/或第二劃分單元312,圖6僅作為一種可能的實現方式的示意,不構成對本發(fā)明實施例的限制。

進一步,解析模塊32包括:生成單元321,調度單元322和執(zhí)行單元323。

生成單元321,用于根據各文件片段在所述文件中的位置,生成各解析任務。

調度單元322,用于將各解析任務調度到至少兩個進程中的對應進程。

執(zhí)行單元323,用于由所述至少兩個進程并行執(zhí)行調度獲得的解析任務。

其中,執(zhí)行單元323包括:讀取子單元3231和解析子單元3232。

讀取子單元3231,用于針對每一個進程,根據調度獲得的解析任務中所記錄的位置,從所述文件中讀取得到對應的文件片段。

解析子單元3232,用于對所讀取到的文件片段進行解析。

作為一種可能的實現方式,解析任務用于對所述文件片段進行校驗操作,基于此,解析子單元3232,具體用于根據對所述進程所預先配置的校驗規(guī)則,對所讀取到的文件片段進行校驗。

進一步,文件解析裝置還包括:掃描模塊33,結果模塊34和定位模塊35。

掃描模塊33,用于對所述文件進行掃描操作,以確定所述文件已成功接收。

結果模塊34,用于當所述至少兩個文件片段中的至少一個解析失敗時,確定所述文件解析失敗。

定位模塊35,用于定位解析失敗的文件片段在所述文件中的位置。

本實施例所提供的文件解析裝置,具體用于執(zhí)行實施例一和二所提供的文件解析方法,具體功能模塊的實現參見前述實施例中的相關描述,本實施例中對此不再贅述。

實施例五

圖7為本發(fā)明實施例五提供的一種文件解析系統的結構示意圖,該文件解析系統運行在分布式的集群中,如圖7所示,該文件解析系統的架構包括前置分塊層、調度層和任務解析層。

前置分塊層上運行有至少一臺前置分塊服務器,調度層上運行有至少一臺調度服務器和任務解析層上運行有多臺任務解析服務器。

其中,前置分塊服務器用于將文件劃分為至少兩個文件片段。

調度服務器的臺數可以為一臺或多臺,不同的調度服務器可以運行于不同的集群內,每臺調度服務器調度其所在集群中的任務解析服務器執(zhí)行解析任務。

具體的,當調度層僅含一臺調度服務器時,前置分塊層將全部的待解析的文件片段發(fā)送給該調度服務器,由其根據這些文件片段生成解析任務并對解析任務進行調度;而當調度層包含兩臺或更多臺調度服務器時,兩臺或更多臺調度服務器之間需要首先執(zhí)行一次調度,確定每臺調度服務器所需處理的文件片段并發(fā)送至對應的調度服務器,然后再由每臺調度服務器對各自所接收到的文件片段進行包括生成解析任務以及對解析任務進行調度在內的處理??梢姡斦{度層僅含一臺調度服務器時對于文件片段為一次分發(fā),當調度層包含至少兩臺調度服務器時為二次分發(fā)。

為了清楚說明文件解析系統的運行,圖8為文件解析系統的原理示意圖,如圖8所示,包括:

步驟501、外部系統生成文件之后,向文件解析系統發(fā)送文件到達的通知消息。

步驟502、文件解析系統的前置分塊層獲取當前的劃分策略,根據當前的劃分策略對文件進行劃分,得到各文件片段。

具體的,對文件進行劃分時,可以根據預設的劃分策略將文件劃分為多個文件片段。由于這里的文件劃分是對構成文件的字節(jié)所進行的劃分,因此在進行劃分之前,還需要根據文件的類型,確定該類型文件的最小劃分單元,采用該最小劃分單元對文件進行劃分,避免將一個最小劃分單元中各部分的字節(jié)劃分在不同的文件片段中,導致無法進行文件解析??梢?,這里確定最小劃分單元時,需參考后續(xù)文件解析時所能夠對每一類型文件進行解析的最小單元進行確定。

例如:對于文檔類型的文件,最小劃分單元可以為語句或者段落或者是頁;而對于表格類型的文件,最小劃分單元可以為單元格,或者為行,或者為列。

其中,對于劃分策略來說,可以根據文件片段的預設數據量,或者是根據文件片段的預設數量對文件進行劃分,從而得到多個文件片段。

步驟503、前置分塊層記錄各文件片段的第一個和最后一個字節(jié)在文件中的相對位置,得到節(jié)點記錄。

步驟504、對文件的內容和節(jié)點記錄進行存儲,將所存儲的文件的內容和節(jié)點記錄發(fā)送至分發(fā)調度層。

步驟505、分發(fā)調度層根據節(jié)點記錄,對文件的各文件片段進行分塊存儲。

具體的,分發(fā)調度層讀取節(jié)點記錄中所記錄的字節(jié),根據所記錄的字節(jié)確定文件的各文件片段的第一個字節(jié)和最后一個字節(jié),從而確定出各文件片段的內容,對所確定出的各文件片段進行分塊存儲。

作為一種可能的實現方式,每一個文件片段可以存儲在一個物理存儲分塊上,在這個物理存儲分塊上有且只存儲有這一個文件片段。

作為另一種可能的實現方式,在存儲空間不足時,可以將不同的文件片段存儲在同一個物理存儲分塊上,進一步,可以采用能夠用于區(qū)分的特殊字節(jié),在兩個文件片段之間進行分隔。

步驟506、分發(fā)調度層根據每一個文件片段的存儲位置,生成解析任務。

其中,每一個解析任務與一個存儲分塊相對應,解析任務中可以記錄有該文件片段的第一個字節(jié)和最后一個字節(jié)。

步驟507、分發(fā)調度層將各解析任務調度至任務解析層中對應的任務解析服務器,以使任務解析服務器執(zhí)行該解析任務從而對文件片段進行解析。

具體的,分發(fā)調度層可以采用預設的調度策略進行調度,并將解析任務發(fā)送至對應的任務解析服務器。例如:調度策略可以為預設解析任務和任務解析服務器之間的對應關系,還可以為負載均衡等。

步驟508、分發(fā)調度層中各任務解析服務器根據所接收到的解析任務,從對應的存儲分塊中讀取文件片段。

步驟509、分發(fā)調度層中各任務解析服務器對文件片段進行解析。

當解析任務指示對文件片段執(zhí)行校驗操作時,根據預先配置的校驗規(guī)則,對所讀取到的文件片段進行校驗操作,其中,校驗規(guī)則具體用于校驗預設行或列中的文字是否符合一定的格式,或者數字是否符合一定的取值范圍,某個單元格中的取值是否為空等。

步驟510、分發(fā)調度層中各任務解析服務器向分發(fā)調度層返回解析結果。

其中,解析結果中,包括針對問價片段解析成功或者失敗的指示信息。

步驟511、分發(fā)調度層對所接收到的解析結果進行匯總。

若至少一個解析結果為未通過,則確定文件解析失敗。若全部解析結果均為通過時,則確定文件解析成功。

在文件解析失敗時,定位解析失敗的文件片段在文件中的位置,具體可以通過根據發(fā)送解析失敗的解析結果的任務解析服務器,查詢其在調度時所調度到對應哪一個文件片段的解析任務,從而確定文件中的該文件片段解析失敗。

步驟512、分發(fā)調度層向前置分塊層返回匯總結果。

在上一步驟中,由于分發(fā)調度層針對每一個文件片段進行存儲,從而可以獲知該文件片段的存儲位置和內容,從而在匯總結果為解析失敗時,可以在匯總結果中攜帶導致解析失敗的文件片段的內容,或者,例如在文件中的相對位置等標識。

從而使得前置分塊層能夠根據匯總結果,確定對該文件繼續(xù)后續(xù)處理。例如:當匯總結果指示文件解析成功時,通知對該文件進行業(yè)務處理的業(yè)務處理系統執(zhí)行數據處理流程;當匯總結果指示文件解析失敗時,請求人工處理。

本實施例中,通過將文件劃分為至少兩個文件片段,從而并行對所劃分得到的至少兩個文件片段進行解析。從而通過這種并行解析的方式,提高了文件的解析速度,解決了文件解析速度較慢的技術問題,尤其是在文件的數據量較大的情況下,能夠確保在預設時間點之前完成文件的解析。

本領域普通技術人員可以理解:實現上述各方法實施例的全部或部分步驟可以通過程序指令相關的硬件來完成。前述的程序可以存儲于一計算機可讀取存儲介質中。該程序在執(zhí)行時,執(zhí)行包括上述各方法實施例的步驟;而前述的存儲介質包括:rom、ram、磁碟或者光盤等各種可以存儲程序代碼的介質。

最后應說明的是:以上各實施例僅用以說明本發(fā)明的技術方案,而非對其限制;盡管參照前述各實施例對本發(fā)明進行了詳細的說明,本領域的普通技術人員應當理解:其依然可以對前述各實施例所記載的技術方案進行修改,或者對其中部分或者全部技術特征進行等同替換;而這些修改或者替換,并不使相應技術方案的本質脫離本發(fā)明各實施例技術方案的范圍。

當前第1頁1 2 
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1