處理壓縮文件的方法和裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計算機技術(shù)領(lǐng)域,特別地涉及一種處理壓縮文件的方法和裝置。
【背景技術(shù)】
[0002]在大數(shù)據(jù)領(lǐng)域中,數(shù)據(jù)壓縮是一項非常重要的技術(shù),對海量數(shù)據(jù)進行壓縮存儲,能夠節(jié)省服務(wù)器存儲空間,提高數(shù)據(jù)處理效率,減少內(nèi)存和磁盤I/o開銷,提高大數(shù)據(jù)的SQL查詢效率。
[0003]LZO(Lempel-Ziv-Oberhumer)是致力于解壓速度的一種數(shù)據(jù)壓縮算法,這個算法是無損算法,參考實現(xiàn)程序是線程安全的,并且具有解壓簡單、速度非???,解壓不需要內(nèi)存,壓縮相當(dāng)?shù)乜斓忍攸c。
[0004]由于Presto和LZO遵循不同的開源協(xié)議,Presto遵循Apache Licence 2.0(—個在Apache軟件基金會發(fā)布的自由軟件許可證),而LZO遵循GPL (General Public License,是一個廣泛被使用的自由軟件許可協(xié)議條款)協(xié)議,因此Presto無法在源碼中集成LZO源碼并實現(xiàn)對LZO壓縮格式的支持。
【發(fā)明內(nèi)容】
[0005]有鑒于此,本發(fā)明提供一種處理壓縮文件的方法和裝置,能夠使Presto支持LZO壓縮格式。
[0006]為實現(xiàn)上述目的,根據(jù)本發(fā)明的一個方面,提供了一種處理壓縮文件的方法。
[0007]本發(fā)明的處理壓縮文件的方法包括:在Presto服務(wù)器啟動時,將Hadoop-1zo插件作為第三方插件導(dǎo)入;在所述Presto服務(wù)器讀取到Izo壓縮格式的文件的情況下,使用所述Hadoop-1zo插件處理所述Izo壓縮格式的文件。
[0008]可選地,在所述Presto服務(wù)器讀取到Izo壓縮格式的文件的情況下,還包括:判斷所述Izo壓縮格式的文件是否存在索引文件,若是,則根據(jù)該索引文件對所述Izo壓縮格式的文件進行分片得到多個數(shù)據(jù)片;使用所述Hadoop-lzo插件處理所述Izo壓縮格式的文件的步驟包括:使用所述Hadoop-lzo插件,對所述多個數(shù)據(jù)片進行并行處理。
[0009]可選地,在使用所述Hadoop-1zo插件處理Izo壓縮格式的數(shù)據(jù)時,調(diào)用Izo解壓縮函數(shù);其中該Izo解壓縮函數(shù)繼承通用的解壓縮函數(shù),并且使用Hadoop-lzo插件提供的接口進行重寫。
[0010]根據(jù)本發(fā)明的另一方面,提供了一種處理壓縮文件的裝置。
[0011]本發(fā)明的處理壓縮文件的裝置包括:插件導(dǎo)入模塊,用于在Presto服務(wù)器啟動時,將Hadoop-1zo插件作為第三方插件導(dǎo)入;處理模塊,用于在所述Presto服務(wù)器讀取到Izo壓縮格式的文件的情況下,使用所述Hadoop-1zo插件處理所述Izo壓縮格式的文件。
[0012]可選地,所述處理模塊還用于在所述Presto服務(wù)器讀取到Izo壓縮格式的文件的情況下,判斷所述Izo壓縮格式的文件是否存在索引文件,若是,則根據(jù)該索引文件對所述Izo壓縮格式的文件進行分片得到多個數(shù)據(jù)片;以及使用所述Hadoop-lzo插件,對所述多個數(shù)據(jù)片進行并行處理。
[0013]可選地,所述處理模塊還用于在使用所述Hadoop-1zo插件處理Izo壓縮格式的數(shù)據(jù)時,調(diào)用Izo解壓縮函數(shù);其中該Izo解壓縮函數(shù)繼承通用的解壓縮函數(shù),并且使用Hadoop-1zo插件提供的接口進行重寫。
[0014]根據(jù)本發(fā)明的技術(shù)方案,在Presto服務(wù)器啟動時,將Hadoop-1zo插件作為第三方插件導(dǎo)入,利用Hadoop-1zo插件處理Izo壓縮格式的文件。Hadoop-1zo插件提供了對LZO壓縮文件進行各種處理的接口,因此通過該插件提供的公共接口可以實現(xiàn)對LZO壓縮文件的處理,也不會帶來使用LZO源碼時開源協(xié)議不統(tǒng)一的困擾。這樣就使得Presto能夠支持LZO壓縮格式。另外,通過處理LZO索引對LZO文件進行分片并行處理,能夠進一步提高數(shù)據(jù)處理速度。如需要支持其他壓縮格式,只需要添加新的插件,并使用該插件提供的接口重寫通用的解壓縮函數(shù)即可,使系統(tǒng)功能易于擴展。
【附圖說明】
[0015]附圖用于更好地理解本發(fā)明,不構(gòu)成對本發(fā)明的不當(dāng)限定。其中:
[0016]圖1是根據(jù)本發(fā)明實施例的Presto服務(wù)器、插件接口、第三方插件的關(guān)系的示意圖;
[0017]圖2是根據(jù)本發(fā)明實施例的處理壓縮文件的方法的基本步驟的示意圖;
[0018]圖3是根據(jù)本發(fā)明實施例的處理壓縮文件的裝置的主要模塊的示意圖。
【具體實施方式】
[0019]以下結(jié)合附圖對本發(fā)明的示范性實施例做出說明,其中包括本發(fā)明實施例的各種細節(jié)以助于理解,應(yīng)當(dāng)將它們認為僅僅是示范性的。因此,本領(lǐng)域普通技術(shù)人員應(yīng)當(dāng)認識到,可以對這里描述的實施例做出各種改變和修改,而不會背離本發(fā)明的范圍和精神。同樣,為了清楚和簡明,以下的描述中省略了對公知功能和結(jié)構(gòu)的描述。
[0020]本發(fā)明實施例利用了 Presto提供的對第三方插件的支持功能,基本原理為:將第三方插件集成到Presto服務(wù)器插件集合中,在Presto服務(wù)器啟動時,動態(tài)導(dǎo)入第三方插件。Presto運行時動態(tài)查找并綁定第三方插件,調(diào)用第三方插件提供的接口,從而將第三方插件的功能集成到Presto中。在本發(fā)明實施例中,將Hadoop-1zo插件導(dǎo)入到Presto插件集合中作為第三方插件,Presto動態(tài)綁定該插件。圖1是根據(jù)本發(fā)明實施例的Presto服務(wù)器、插件接口、第三方插件的關(guān)系的示意圖。
[0021]圖2是根據(jù)本發(fā)明實施例的處理壓縮文件的方法的基本步驟的示意圖。該方法由Presto服務(wù)器執(zhí)行。
[0022]步驟S21 !Presto服務(wù)器啟動。
[0023]步驟S22:將Hadoop-1zo插件作為第三方插件導(dǎo)入。
[0024]步驟S23:從數(shù)據(jù)源中讀取數(shù)據(jù)。
[0025]步驟S24:判斷讀取到的數(shù)據(jù)是否為Izo壓縮格式的文件,若是,進入步驟S25,否則進入步驟S26。
[0026]步驟S25:使用Hadoop-1zo插件處理Izo壓縮格式的文件。
[0027]步驟S26:根據(jù)讀取到