文件統(tǒng)計方法和文件統(tǒng)計系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及數(shù)據(jù)處理領(lǐng)域,具體涉及一種文件統(tǒng)計方法和文件統(tǒng)計系統(tǒng)。
【背景技術(shù)】
[0002]對于諸如日志文件的文本文件來說,有時需要對其進行檢測,獲知一些相關(guān)信息,例如行數(shù)。對于較小的文本文件來說,可以直接將該文件打開并統(tǒng)計文件中的行數(shù)。然而,有些文本文件(例如某些業(yè)務(wù)日志文件)可能非常大,例如,其可能大于500GB。對于這種超大的文本文件來說,很難將其直接打開并統(tǒng)計其行數(shù),因為這需要消耗非常大的處理資源,即要求檢測該文件的設(shè)備具有較高的數(shù)據(jù)處理能力和運算速度。通常對于這種超大文本文件,現(xiàn)有方法通常是首先將其切割成多個較小的文件,隨后將每個切割文件分別打開并對每個切割文件的行數(shù)進行計數(shù),隨后將所有行數(shù)匯總獲得該文本文件的總行數(shù)。這種方式需要執(zhí)行文件切割、行數(shù)計數(shù)以及行數(shù)匯總等步驟,因此其耗時較長。因此,需要提供一種簡單高效的文件統(tǒng)計方法。
【發(fā)明內(nèi)容】
[0003]鑒于上述問題,提出了本發(fā)明以便提供一種至少部分地解決上述問題的文件統(tǒng)計方法和文件統(tǒng)計系統(tǒng)。
[0004]依據(jù)本發(fā)明的一個方面,提供了一種文件統(tǒng)計方法。該文件統(tǒng)計方法包括:從文本文件中抽取一個或多個文件片段,其中,一個或多個文件片段中的每一個文件片段具有特定數(shù)據(jù)量;檢測一個或多個文件片段中的每一個文件片段的行數(shù);根據(jù)一個或多個文件片段中的每一個文件片段的行數(shù)計算具有特定數(shù)據(jù)量的文件片段的平均行數(shù);以及根據(jù)具有特定數(shù)據(jù)量的文件片段的平均行數(shù)和文本文件的數(shù)據(jù)量估計文本文件的行數(shù)。
[0005]依據(jù)本發(fā)明的一個方面,提供了一種文件統(tǒng)計系統(tǒng)。該文件統(tǒng)計系統(tǒng)包括第一抽取裝置、第一檢測裝置、計算裝置和估計裝置。第一抽取裝置用于從文本文件中抽取一個或多個文件片段,其中,一個或多個文件片段中的每一個文件片段具有特定數(shù)據(jù)量。第一檢測裝置用于檢測一個或多個文件片段中的每一個文件片段的行數(shù)。計算裝置用于根據(jù)一個或多個文件片段中的每一個文件片段的行數(shù)計算具有特定數(shù)據(jù)量的文件片段的平均行數(shù)。估計裝置用于根據(jù)具有特定數(shù)據(jù)量的文件片段的平均行數(shù)和文本文件的數(shù)據(jù)量估計文本文件的行數(shù)。
[0006]根據(jù)本發(fā)明提供的文件統(tǒng)計方法和文件統(tǒng)計系統(tǒng),采用抽樣方式確定文本文件中的具有特定數(shù)據(jù)量的文件片段的平均行數(shù),并進一步基于該平均行數(shù)估計整個文本文件的行數(shù),這種方式簡單高效、成本低,通過這種方式可以較準確地估計出整個文本文件的行數(shù)。
[0007]上述說明僅是本發(fā)明技術(shù)方案的概述,為了能夠更清楚了解本發(fā)明的技術(shù)手段,而可依照說明書的內(nèi)容予以實施,并且為了讓本發(fā)明的上述和其它目的、特征和優(yōu)點能夠更明顯易懂,以下特舉本發(fā)明的【具體實施方式】。
【附圖說明】
[0008]通過閱讀下文優(yōu)選實施方式的詳細描述,各種其他的優(yōu)點和益處對于本領(lǐng)域普通技術(shù)人員將變得清楚明了。附圖僅用于示出優(yōu)選實施方式的目的,而并不認為是對本發(fā)明的限制。而且在整個附圖中,用相同的參考符號表示相同的部件。在附圖中:
[0009]圖1示出根據(jù)本發(fā)明一個實施例的文件統(tǒng)計方法的流程示意圖;
[0010]圖2示出根據(jù)本發(fā)明另一個實施例的文件統(tǒng)計方法的流程示意圖;
[0011]圖3示出根據(jù)本發(fā)明另一個實施例的文件統(tǒng)計方法的流程示意圖;
[0012]圖4示出根據(jù)本發(fā)明另一個實施例的文件統(tǒng)計方法的流程示意圖;以及
[0013]圖5示出根據(jù)本發(fā)明一個實施例的文件統(tǒng)計系統(tǒng)的示意性框圖。
【具體實施方式】
[0014]下面將參照附圖更詳細地描述本公開的示例性實施例。雖然附圖中顯示了本公開的示例性實施例,然而應(yīng)當理解,可以以各種形式實現(xiàn)本公開而不應(yīng)被這里闡述的實施例所限制。相反,提供這些實施例是為了能夠更透徹地理解本公開,并且能夠?qū)⒈竟_的范圍完整的傳達給本領(lǐng)域的技術(shù)人員。
[0015]根據(jù)本發(fā)明的一個方面,提供一種文件統(tǒng)計方法。圖1示出根據(jù)本發(fā)明一個實施例的文件統(tǒng)計方法100的流程示意圖。如圖1所示,文本統(tǒng)計方法100包括以下步驟。
[0016]在步驟S110,從文本文件中抽取一個或多個文件片段,其中,一個或多個文件片段中的每一個文件片段具有特定數(shù)據(jù)量。
[0017]從文本文件中抽取一個或多個文件片段也就是對文本文件進行抽樣的過程。該抽樣可以是隨機抽樣,例如在文本文件中隨意抽取文件片段。該抽樣也可以是根據(jù)預(yù)設(shè)規(guī)則進行抽樣,例如每隔固定間隔抽取一個文件片段??梢赃M行多次抽樣,在每次抽樣時,從文本文件中抽取一個文件片段。每個文件片段的數(shù)據(jù)量是一致的。例如,對于500GB的文本文件來說,可以抽取一個或多個64MB的文件片段。
[0018]在步驟S120,檢測一個或多個文件片段中的每一個文件片段的行數(shù)。
[0019]對于每個文件片段來說,可以將該文件片段打開,直接對文件片段的行數(shù)進行計數(shù)??梢岳斫獾氖?,各文件片段的行數(shù)可能相同或不同。例如,對于500GB的文本文件來說,可以在每100GB中抽取一個64MB的文件片段,一共可以抽取到五個64MB的文件片段。隨后,可以分別將這五個64MB的文件片段打開并對每個文件片段的行數(shù)進行計數(shù)。
[0020]在步驟S130,根據(jù)一個或多個文件片段中的每一個文件片段的行數(shù)計算具有特定數(shù)據(jù)量的文件片段的平均行數(shù)。
[0021]計算具有特定數(shù)據(jù)量的文件片段的平均行數(shù)可以是將該一個或多個文件片段的總行數(shù)除以該一個或多個文件片段的片段個數(shù)。假設(shè)上述五個64MB的文件片段的行數(shù)分別是7行、10行、11行、9行和5行,總數(shù)是42行。根據(jù)這五個文件片段的行數(shù)可以計算出在該500GB的文本文件中,64MB的文件片段的平均行數(shù)是42/5,S卩8.4行。
[0022]在步驟S140,根據(jù)具有特定數(shù)據(jù)量的文件片段的平均行數(shù)和文本文件的數(shù)據(jù)量估計文本文件的行數(shù)。
[0023]可以根據(jù)以下公式估計文本文件的行數(shù):
[0024]N=Q/Qs*n,
[0025]其中,N為文本文件的行數(shù),Q為文本文件的數(shù)據(jù)量,QsS特定數(shù)據(jù)量,n為具有特定數(shù)據(jù)量的文件片段的平均行數(shù)。
[0026]例如,對于上述500GB的文本文件來說,由于該文件的64ΜΒ的文件片段的平均行數(shù)是8.4行,因此可以估計出該文件的行數(shù)為500GB/64MB*8.4 = 67200。
[0027]可以理解的是,本文所述的文本文件優(yōu)選地是其中各行的數(shù)據(jù)量基本一致的文件。這樣,通過文件統(tǒng)計方法100所估計出的文本文件的行數(shù)準確度會較高。
[0028]在現(xiàn)有技術(shù)中,有時采用較高性能的處理系統(tǒng),例如分布式文件系統(tǒng)(HadoopDistributed File System,簡稱HDFS),對超大文本文件進行處理以統(tǒng)計文本文件的行數(shù),這種方式的成本較高。與采用HDFS的方法相比,本發(fā)明提供的文件統(tǒng)計方法由于并未對整個文本文件的行數(shù)進行計數(shù),因此不要求文件統(tǒng)計系統(tǒng)具有較高的處理性能,從而可以降低成本。
[0029]根據(jù)本發(fā)明提供的文件統(tǒng)計方法,采用抽樣方式確定文本文件中的具有特定數(shù)據(jù)量的文件片段的平均行數(shù),并進一步基于該平均行數(shù)估計整個文本文件的行數(shù),這種方式簡單高效、成本低,通過這種方式可以較準確地估計出整個文本文件的行數(shù)。
[0030]根據(jù)本發(fā)明另一個實施例,文件統(tǒng)計方法100可以進一步包括:判斷文本文件的數(shù)據(jù)量是否大于預(yù)定閾值,如果文本文件的數(shù)據(jù)量大于預(yù)定閾值,則轉(zhuǎn)至上述步驟S110。
[0031]根據(jù)上述步驟SI10至步驟S140對文本文件的行數(shù)進行估計的方式比較適用于超大文本文件。對于較小的文本文件來說,可以直接將整個文本文件打開并檢測其行數(shù)。因此,可以事先設(shè)定一個預(yù)定閾值用來判斷文本文件適合采用哪種方式來統(tǒng)計行數(shù)。該預(yù)定閾值可以根據(jù)需要而定,例如,其可以是10GB以上的任意數(shù)據(jù)量,諸如10GB、200GB、300GB、500GB等等。文