檔案處理的方法及裝置
本說明書一個或多個實施例有關電腦技術領域,尤其有關透過電腦檔案處理的方法和裝置。
雲端運算(Cloud Computing) 是分散式處理(Distributed Computing)、平行處理(Parallel Computing) 和網格運算(Grid Computing) 的發展,透過網路將龐大的運算處理程式拆分成若干較小的子程式,將這些小程式分別交由多台伺服器所組成的系統進行運算,並輸出運算結果。雲端儲存是在雲端運算上延伸出來的概念,一般是指透過叢集應用、網格技術或分散式檔案系統等功能,將網路中大量不同類型的儲存設備透過應用軟體集合在一起,實現協同工作,共同對外提供資料儲存和業務存取功能。即雲端儲存系統就是一個以資料儲存和管理為核心的雲端運算系統。雲端儲存系統可以透過一定的應用軟體或應用介面,為用戶提供一定類型的儲存服務和存取服務。
通常,需要解析檔案的情況下,例如需要將檔案從其他格式解析成內部可以處理的格式時,如果檔案較大,往往需要將大檔案切割為較小的切片檔案,然後由解析設備叢集對各個切片檔案進行解析。這個過程通常涉及大檔案和切割好的切片檔案的下載和上傳,產生較多耗時。因此,希望能有改進的方案,在解析大檔案時,透過有效的檔案分割,減少耗時,提高檔案處理的有效性。
本說明書一個或多個實施例描述了一種方法和裝置,可以選擇性地下載部分待處理檔案,透過確定各個片段檔案的索引資訊確定待處理檔案的劃分方案,而無需下載整個檔案並真實切割,從而減少耗時,提高檔案處理的有效性。
根據第一態樣,提供了一種檔案處理的方法,適用於透過解析設備叢集針對待雲端儲存伺服器中的處理檔案進行解析的情況,包括:從雲端儲存伺服器下載起始檔案塊,以獲取所述待處理檔案的首個行分隔符的位置,所述起始檔案塊是所述待處理檔案中從起始位置開始的、包括所述首個行分隔符的檔案塊;基於所述首個行分隔符的位置確定所述待處理檔案的行容量;根據預設片段行數和所述行容量,下載所述待處理檔案中的第一分界檔案塊,所述第一分界檔案塊包括,當按照所述預設片段行數將所述待處理檔案進行劃分時,劃分得到的多個片段檔案中第一片段檔案的結束位置的行分隔符;至少基於所述第一分界檔案塊中的行分隔符的位置,確定所述第一片段檔案的第一索引資料,所述第一索引資料包括第一開始索引和第一結束索引,所述第一索引資料用於所述解析設備叢集中的解析設備按照所述第一索引資料,從所述雲端儲存伺服器解析所述第一片段檔案。
在一些實施例中,所述從雲端儲存伺服器下載起始檔案塊包括:從起始位置開始下載預定大小的檔案塊作為起始檔案塊,並從所述起始檔案塊中查找行分隔符;在未查找到行分隔符的情況下,向後增加一個預定大小的檔案塊以更新所述起始檔案塊,直到從中查找到首個行分隔符。
在一些實施例中,基於所述首個行分隔符的位置確定所述待分割檔案的行容量包括:將所述行容量確定為,所述待處理檔案的起始位置至所述首個分隔符的位置所包含的位元組數。
在一些實施例中,根據預設片段行數和所述行容量下載所述待處理檔案中的第一分界檔案塊包括:確定所述第一片段檔案的檔案開始位置;確定所述第一分界檔案塊的塊開始位置為,所述檔案開始位置加上片段容量的位置,所述第一分界檔案塊的大小為一個行容量,其中,所述片段容量為,所述預設片段檔案行數與所述行容量的乘積。
在一些實施例中,根據預設片段行數和所述行容量,下載所述待處理檔案中的第一分界檔案塊還包括:下載所述第一分界檔案塊,並從所述第一分界檔案塊中查找行分隔符;在未查找到行分隔符的情況下,向後增加一個行容量大小的檔案塊以更新所述第一分界檔案塊,並下載更新後的第一分界檔案塊,直到從中查找到行分隔符。
在一些實施例中,其中,確定所述第一片段檔案的檔案開始位置包括:在所述第一片段檔案是所述待處理檔案的第一個片段檔案的情況下,將所述待處理檔案的所述起始位置作為所述第一片段檔案的檔案開始位置;否則,將所述第一片段檔案的前一個片段檔案的結束位置作為所述檔案開始位置。
在一些實施例中,所述第一片段檔案為所述待處理檔案的第一個片段檔案,所述確定所述第一片段檔案的第一索引資料包括:確定所述第一開始索引指向所述待處理檔案的所述起始位置;確定所述第一結束索引指向所述第一分界檔案塊中的行分隔符的位置。
在一些實施例中,所述方法還包括:獲取所述待處理檔案的檔案大小資訊;以及,根據預設片段行數和所述行容量,下載所述待處理檔案中的第一分界檔案塊還包括:獲取所述待處理檔案的檔案大小資訊;基於所述檔案大小資訊檢測所述第一分界檔案塊是否超出所述待處理檔案的檔案大小範圍;在超出的情況下,確定最後一個片段檔案的所述第一結束索引指向所述待處理檔案的結束位置。
在一些實施例中,所述確定所述第一片段檔案的第一索引資料包括:將所述第一片段檔案的前一個片段檔案的結束索引作為所述第一開始索引;確定所述第一結束索引指向所述第一分界檔案塊中的行分隔符的位置。
在一些實施例中,所述方法還包括,將第一索引資料添加到用於所述多個片段檔案的索引資訊中。
在一些實施例中,所述方法還包括,利用所述索引資訊更新所述雲端儲存伺服器中的任務配置表,以供所述雲端儲存伺服器按照所述任務配置表的分發規則向所述解析設備叢集分發所述索引資訊。
在一些實施例中,所述方法還包括,將所述第一索引資料作為傳遞參數,透過參數呼叫的方式發送至所述解析設備叢集。
根據第二態樣,提供一種檔案處理的裝置,適用於透過解析設備叢集針對待處理檔案進行解析的情況,包括:
起始檔案塊下載單元,配置為從所述雲端儲存伺服器下載起始檔案塊,以獲取所述待處理檔案的首個行分隔符的位置,所述起始檔案塊是所述待處理檔案中從起始位置開始的、包括所述首個行分隔符的檔案塊;行容量確定單元,配置為基於所述首個行分隔符的位置確定所述待處理檔案的行容量;分界檔案塊下載單元,配置為根據預設片段行數和所述行容量,下載所述待處理檔案中的第一分界檔案塊,所述第一分界檔案塊包括,當按照所述預設片段行數將所述待處理檔案進行劃分時,劃分得到的多個片段檔案中第一片段檔案的結束位置的行分隔符;索引資料確定單元,配置為至少基於所述第一分界檔案塊中的行分隔符的位置,確定所述第一片段檔案的第一索引資料,所述第一索引資料包括第一開始索引和第一結束索引,所述第一索引資料用於解析設備按照所述第一索引資料,從所述雲端儲存伺服器解析所述第一片段檔案。
根據第三態樣,提供了一種電腦可讀媒體儲存媒體,其上儲存有電腦程式,當所述電腦程式在電腦中執行時,令電腦執行第一態樣的方法。
根據第四態樣,提供了一種運算設備,包括記憶體和處理器,其特徵在於,所述記憶體中儲存有可執行碼,所述處理器執行所述可執行碼時,實現第一態樣的方法。
透過本說明書實施例提供的方法和裝置,首先從待處理檔案的起始位置下載起始檔案塊,並根據起始檔案塊中首個行分隔符的位置確定行容量,然後基於行容量和預設片段行數下載分界檔案塊,透過讀取分界檔案塊獲取其中的行分隔符,從而至少基於該行分隔符得到片段檔案的索引資料,用於解析設備根據索引資料從雲端儲存伺服器解析片段檔案。如此,僅僅需要從雲端儲存伺服器獲取起始檔案塊和分界檔案塊,由於選擇性地下載部分待處理檔案,透過確定各個片段檔案的索引資訊確定待處理檔案的劃分方案,而不用下載整個檔案並對檔案進行真實切割,可以減少耗時,提高檔案處理的有效性。
下面結合圖式,對本說明書提供的方案進行描述。
圖1為本說明書揭露的一個實施例的實施場景示意圖。如圖1所示,雲端儲存伺服器110可以為運算平台130等提供分散式儲存服務,例如某個雲端物件儲存服務平台OSS(Object Storage 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所述的方法。
本領域技術人員應該可以意識到,在上述一個或多個示例中,本發明所描述的功能可以用硬體、軟體、韌體或它們的任意組合來實現。當使用軟體實現時,可以將這些功能儲存在電腦可讀媒體中或者作為電腦可讀媒體上的一個或多個指令或碼進行傳輸。
以上所述的實施例,對本發明的目的、技術方案和有益效果進行了進一步詳細說明,所應理解的是,以上所述僅為本發明的實施例而已,並不用於限定本發明的保護範圍,凡在本發明的技術方案的基礎之上,所做的任何修改、等同替換、改進等,均應包括在本發明的保護範圍之內。
21‧‧‧方法步驟
22‧‧‧方法步驟
23‧‧‧方法步驟
24‧‧‧方法步驟
41‧‧‧起始檔案塊下載單元
42‧‧‧行容量確定單元
43‧‧‧分界檔案塊下載單元
44‧‧‧索引資料確定單元
110‧‧‧雲端儲存伺服器
121‧‧‧解析設備
122‧‧‧解析設備
123‧‧‧解析設備
130‧‧‧運算平台
400‧‧‧裝置
為了更清楚地說明本發明實施例的技術方案,下面將對實施例描述中所需要使用的圖式作簡單地介紹,顯而易見地,下面描述中的圖式僅僅是本發明的一些實施例,對於本發明所屬技術領域中具有通常知識者來講,在不付出創造性勞動的前提下,還可以根據這些圖式獲得其它的圖式。
圖1示出本說明書揭露的一個實施例的實施場景示意圖;
圖2示出根據一個實施例的檔案處理的方法流程圖;
圖3示出確定待處理檔案的行分隔符和分界檔案塊的一個具體例子;
圖4示出根據一個實施例的用於檔案處理的裝置的示意性方塊圖。