小文件合併的方法和數據查詢系統與流程
2023-05-29 15:51:56 2

本發明涉及資料庫領域,具體而言,涉及一種小文件合併的方法和數據查詢系統。
背景技術:
在Hadoop中的分布式文件系統(Hadoop Distributed File System,簡稱為HDFS)中保存的數據文件,數據文件的地址信息會映射到命名節點(Namenode)的內存中,當客戶端讀取HDFS中的數據文件,客戶端會先在Namenode內存中查找數據文件的地址信息,然後把對應的地址信息返回給客戶端,客戶端再通過返回的地址信息直接在Datanode上讀取數據文件。當HDFS中數據的不斷增加,文件數量變大,需要映射的地址信息也就增大,這就佔用了大量Namenode的內存空間。在一個HDFS系統中如果存在大量的小文件,將會消耗大量的Namenode內存空間。例如,在一個生產集群中有大約60000000個小文件,這些小文件消耗了95%的Namenode的內存,但只佔用了30%的存儲空間。就造成了磁碟空間還沒滿,Namenode的內存空間就已經滿了的結果。
在一個web日誌分析系統中,由於web頁面的推廣力度不同,不同時段產生的日誌量也不同,有時每個小時產生幾GB的日誌,有時只產生幾KB的日誌。這樣在HDFS文件系統中就存在大量只有幾KB大小的文件。白白佔用大量的Namenode內存空間。
為了解決小文件佔用過多的Namenode的內存的問題,目前合併HDFS小文件主要採用創建歸檔文件的方式,通過Hadoop archive–ArchiveName方式創建一個har文件。這種方式的執行原理是把合併過程轉化成Mapreduce操作,Mapreduce是一個很耗時的過程。每次map操作之後都要把中間臨時結果保存在本地磁碟中,然後供下一個map使用。這種har文件的存儲方式如圖1所示,這就導致在文件合併的過程中消耗大量的I/O開銷。
針對上述的問題,目前尚未提出有效的解決方案。
技術實現要素:
本發明實施例提供了一種小文件合併的方法和數據查詢系統,以至少解決存儲合併小文件過程的中間臨時結果所造成的消耗大量的I/O開銷的技術問題。
根據本發明實施例的一個方面,提供了一種小文件合併的方法,包括:數據查詢系統接收客戶端的合併請求;所述數據查詢系統根據所述合併請求生成合併任務;以及所述數據查詢系統將所述合併任務分發到在資料庫的數據存放節點中運行的數據合併進程中,其中,所述數據合併進程對所述數據存放節點中存放的小文件進行合併,得到合併後的文件,其中,所述數據合併進程為所述數據查詢系統中的進程。
進一步地,所述數據合併進程對所述數據存放節點中存放的小文件進行合併包括:所述數據合併進程創建與待合併小文件具有映射關係的輸入映射表和用於建立與合併後的文件的映射關係的輸出映射表,其中,所述輸入映射表映射的輸入目錄存儲有所述待合併小文件,所述輸出映射表映射的輸出目錄中用於存儲所述合併後的文件;按照所述合併任務從所述輸入映射表中選擇一個或多個待合併小文件;將選擇的待合併小文件插入到所述輸出映射表中合併為大文件,其中,所述大文件為包含兩個以上待合併小文件的文件內容的文件。
進一步地,所述數據合併進程創建與待合併小文件具有映射關係的輸入映射表和用於建立與合併後的文件的映射關係的輸出映射表包括:根據第一類型的待合併小文件創建第一輸入映射表,根據第二類型的待合併小文件創建第二輸入映射表;將選擇的待合併小文件插入到所述輸出映射表中合併為大文件包括:將從所述第一輸入映射表中選擇的待合併小文件和從所述第二輸入映射表中選擇的待合併小文件插入到所述輸出映射表,合併為一個大文件。
進一步地,所述合併請求中攜帶有文件合併後類型信息,則將選擇的待合併小文件插入到所述輸出映射表中合併為大文件包括:獲取所述合併請求所指示的待合併小文件的合併前類型和所述合併後類型信息;在所述選擇的待合併小文件的合併前類型與所述合併後類型信息所指示的合併後類型相同時,將所述選擇的待合併小文件插入到所述輸入映射表中合併為所述大文件;以及在所述選擇的待合併小文件的合併前類型與所述合併後的文件的所述合併後類型不同時,將所述選擇的待合併小文件的合併前類型轉換為所述合併後類型,並且將轉換後的待合併小文件插入到所述輸入映射表中合併為所述大文件。
進一步地,所述合併前類型包括二進位文件的類型和列示存儲文件的類型。
進一步地,在將選擇的待合併小文件插入到所述輸出映射表中合併為大文件之後,所述方法還包括:按照所述輸出映射表更新所述資料庫中命名節點存儲的地址信息。
進一步地,所述合併請求中還攜帶有文件合併後的壓縮格式信息,則在所述數據合併進程對所述數據存放節點中存放的小文件進行合併之後,所述方法還包括:按照 所述壓縮格式信息所指示的壓縮格式對所述合併後的文件進行壓縮。
根據本發明實施例的另一方面,還提供了一種數據查詢系統,包括:接收單元,用於接收客戶端的合併請求;生成單元,用於根據所述合併請求生成合併任務;以及分發單元,用於將所述合併任務分發到在資料庫的數據存放節點中運行的數據合併進程中,其中,所述數據合併進程對所述數據存放節點中存放的小文件進行合併,得到合併後的文件,其中,所述數據合併進程為所述數據查詢系統中的進程。
進一步地,所述分發單元包括:創建模塊,用於創建與待合併小文件具有映射關係的輸入映射表和用於建立與合併後的文件的映射關係的輸出映射表,其中,所述輸入映射表映射的輸入目錄存儲有所述待合併小文件,所述輸出映射表映射的輸出目錄中用於存儲所述合併後的文件;選擇模塊,用於按照所述合併任務從所述輸入映射表中選擇兩個以上待合併小文件;合併模塊,用於將選擇的待合併小文件插入到所述輸出映射表中合併為大文件,其中,所述大文件為包含兩個以上待合併小文件的文件內容的文件。
進一步地,所述創建模塊還用於根據第一類型的待合併小文件創建第一輸入映射表,根據第二類型的待合併小文件創建第二輸入映射表;所述合併模塊還用於將從所述第一輸入映射表中選擇的待合併小文件和從所述第二輸入映射表中選擇的待合併小文件插入到所述輸出映射表,合併為一個大文件。
進一步地,所述合併請求中攜帶有文件合併後類型信息,所述合併模塊包括:獲取子模塊,用於獲取所述合併請求所指示的待合併小文件的合併前類型和所述合併後類型信息;第一合併子模塊,用於在所述選擇的待合併小文件的合併前類型與所述合併後類型信息所指示的合併後類型相同時,將所述選擇的待合併小文件插入到所述輸入映射表中合併為所述大文件;以及第二合併子模塊,用於在所述選擇的待合併小文件的合併前類型與所述合併後的文件的所述合併後類型不同時,將所述選擇的待合併小文件的合併前類型轉換為所述合併後類型,並且將轉換後的待合併小文件插入到所述輸入映射表中合併為所述大文件。
進一步地,所述數據查詢系統還包括:更新單元,用於在將選擇的待合併小文件插入到所述輸出映射表中合併為大文件之後,按照所述輸出映射表更新所述資料庫中命名節點存儲的地址信息。
進一步地,所述數據查詢系統還包括:壓縮模塊,用於在所述數據合併進程對所述數據存放節點中存放的小文件進行合併之後,按照所述合併請求所指示的壓縮格式對所述合併後的文件進行壓縮。
在本發明實施例中,採用數據查詢系統接收客戶端的合併請求;數據查詢系統根據合併請求生成合併任務;數據查詢系統將合併任務分發到在資料庫的數據存放節點中運行的數據合併進程中,其中,數據合併進程對數據存放節點中存放的小文件進行合併,得到合併後的文件,其中,數據合併進程為數據查詢系統中的進程。由於執行小文件合併任務的進程運行在HDFS系統的數據存放節點中,且該進程屬於數據查詢系統Impala的進程,因此,在Impala接收到客戶端發送的合併請求後,能夠快速啟動執行合併的Impalad進程,降低了合併任務的啟動時間,也就提高了合併小文件的合併效率。同時,由於Impalad進程合併時不需要存儲中間結果文件,不需要反覆調用存儲在本地磁碟的中間結果文件,在減少本地磁碟佔用的同時節省大量I/O開銷,解決了存儲合併小文件過程的中間臨時結果所造成的消耗大量的I/O開銷的技術問題。
附圖說明
此處所說明的附圖用來提供對本發明的進一步理解,構成本申請的一部分,本發明的示意性實施例及其說明用於解釋本發明,並不構成對本發明的不當限定。在附圖中:
圖1是根據現有技術的一種小文件合併的方法的示意圖;
圖2是根據本發明實施例的小文件合併的方法的流程圖;
圖3是根據本發明實施例的Impala的執行過程示意圖;
圖4是根據本發明優選實施例的小文件合併的方法的示意圖;以及
圖5是根據本發明實施例的小文件合併的數據查詢系統的示意圖。
具體實施方式
為了使本技術領域的人員更好地理解本發明方案,下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發明一部分的實施例,而不是全部的實施例。基於本發明中的實施例,本領域普通技術人員在沒有做出創造性勞動前提下所獲得的所有其他實施例,都應當屬於本發明保護的範圍。
需要說明的是,本發明的說明書和權利要求書及上述附圖中的術語「第一」、「第二」等是用於區別類似的對象,而不必用於描述特定的順序或先後次序。應該理解這樣使用的數據在適當情況下可以互換,以便這裡描述的本發明的實施例能夠以除了在這裡圖示或描述的那些以外的順序實施。此外,術語「包括」和「具有」以及他們的 任何變形,意圖在於覆蓋不排他的包含,例如,包含了一系列步驟或單元的過程、方法、系統、產品或設備不必限於清楚地列出的那些步驟或單元,而是可包括沒有清楚地列出的或對於這些過程、方法、產品或設備固有的其它步驟或單元。
名詞解釋:
HDFS:(Hadoop Distributed File System)是Hadoop中的分布式文件系統。
Impala:是一個數據查詢系統,通過SQL語句,查詢存儲在HDFS上的海量數據。
Namenode:命名節點,HDFS存放數據文件的地址信息保存在Namenode中。當Namenode啟動時,會把所有的地址信息加載到內存中。
Datanode:數據節點,存放HDFS數據文件的節點。
Impalad:與Datanode運行在同一節點上,由Impalad進程表示,它接收客戶端的合併請求,生成執行計劃,執行操作。
本發明提供了一種小文件合併的方法。小文件是HDFS中文件佔用存儲空間小於HDFS設定塊的大小的文件,是未進行合併處理的原始文件。該小文件合併方法可以對HDFS系統中的小文件進行合併,減少Namenode的內存佔用。同時,該小文件合併方法利用Impala中的Impalad進程在HDFS數據文件的節點Datanode中直接對小文件進行合併,提高了合併進程的啟動效率,還避免了現有技術在合併小文件的過程中消耗大量的I/O開銷。
以下結合圖2至圖4對本發明實施例進行說明。
圖2是根據本發明實施例的小文件合併的方法的流程圖。如圖2所示,該小文件合併的方法包括:
步驟S202,數據查詢系統接收客戶端的合併請求。
步驟S204,數據查詢系統根據合併請求生成合併任務。
步驟S206,數據查詢系統將合併任務分發到在資料庫的數據存放節點中運行的數據合併進程中,其中,數據合併進程對數據存放節點中存放的小文件進行合併,得到合併後的文件,其中,數據合併進程為數據查詢系統中的進程。
客戶端向Impala中提交數據處理請求,即數據查詢系統接收客戶端的合併請求。Impala根據合併請求生成合併任務,並把合併任務分發到運行在Datanode上的Impalad進程中。Impalad直接讀取本地Datanode上存儲的數據,以對小文件進行合併處理。
由於執行小文件合併任務的進程運行在HDFS系統的數據存放節點中,且該進程屬於數據查詢系統Impala的進程,因此,在Impala接收到客戶端發送的合併請求後,能夠快速啟動執行合併的Impalad進程,降低了合併任務的啟動時間,也就提高了合併小文件的合併效率。同時,由於Impalad進程合併時不需要存儲中間結果文件,不需要反覆調用存儲在本地磁碟的中間結果文件,在減少本地磁碟佔用的同時節省大量I/O開銷。
可選地,數據合併進程對數據存放節點中存放的小文件進行合併包括:數據合併進程創建與待合併小文件具有映射關係的輸入映射表和用於建立與合併後的文件的映射關係的輸出映射表,其中,輸入映射表映射的輸入目錄存儲有待合併小文件,輸出映射表映射的輸出目錄中用於存儲合併後的文件。按照合併任務從輸入映射表中選擇兩個以上待合併小文件。將選擇的待合併小文件插入到輸出映射表中合併為大文件,其中,大文件為包含兩個以上待合併小文件的文件內容的文件。
輸入映射表對應待合併小文件,根據輸入映射表可以確定待合併小文件的名稱和存儲地址;輸出映射表對應合併後的大文件,通過輸出映射表可以查找到合併後的大文件的名稱和存儲地址。在合併過程中,通過將輸入映射表中的待合併小文件插入到輸出映射表中,完成對一個或多個待合併小文件的合併。其中,合併後得到的大文件包括被合併的一個或者多個待合併小文件的文件內容。即本實施例所提供的合併方法並不是將多個待合併小文件打包成為一個包括多個小文件的集合,而是將多個待合併的小文件合併成一個大文件,該大文件包括多個小文件的文件內容。同時,輸出映射表包括合併後得到的大文件的名稱和地址信息,即減少了多個小文件的內存空間的佔用。
具體地,在進行文件合併時,可以對多個不同類型的小文件進行合併。在對多個不同類型的小文件進行合併時,為每個類型的小文件建立一個輸入映射表,每個輸入映射表只存儲相同類型的小文件。即數據合併進程創建與待合併小文件具有映射關係的輸入映射表和用於建立與合併後的文件的映射關係的輸出映射表包括:根據第一類型的待合併小文件創建第一輸入映射表,根據第二類型的待合併小文件創建第二輸入映射表。將選擇的待合併小文件插入到輸出映射表中,得到大文件包括:將從第一輸入映射表中選擇的待合併小文件和從第二輸入映射表中選擇的待合併小文件插入到輸出映射表,合併為一個大文件。
第一類型的待合併小文件和第二類型的待合併小文件分別插入到輸出映射表中,從而完成多個小文件的合併。其中,在合併時可以是同一類型的待合併小文件合併為一個文件塊,還可以是不同類型的待合併小文件合併為一個文件塊。一個或多個輸入映射表對應的小文件可以合併為一個文件塊,一個輸入映射表對應的小文件也可以存 儲在多個文件塊中。文件塊的大小可以根據採用默認的文件塊的大小,即與HDFS的文件塊大小相同,還可以對每個文件塊的大小進行單獨設置。
圖3是根據本發明實施例的Impala的執行過程示意圖。如圖所示,客戶端提交任務到Impalad,在Impalad中生成執行計劃,然後通過協調器把任務發送到執行引擎中,任務在執行引擎中執行,直接訪問HDFS上的數據文件進行合併,把合併後的結果寫入HDFS中。
在將同一類型的待合併小文件合併為一個文件塊時,將該類型的待合併小文件插入到輸出映射表中;在將不同類型的待合併小文件合併為一個文件塊時,分別對不同類型的待合併小文件進行處理,然後再插入到輸出映射表中。
在將選擇的待合併小文件插入到輸出映射表中合併為大文件時,還需要根據待合併小文件的合併前類型和合併後的文件的合併後類型進行文件的合併,即合併請求中攜帶有文件合併後類型信息,獲取合併請求所指示的待合併小文件的合併前類型和合併後類型信息。在選擇的待合併小文件的合併前類型與合併後類型信息所指示的合併後類型相同時,將選擇的待合併小文件插入到輸入映射表中合併為大文件。在選擇的待合併小文件的合併前類型與合併後的文件的合併後類型不同時,將選擇的待合併小文件的合併前類型轉換為合併後類型,並且將轉換後的待合併小文件插入到輸入映射表中合併為大文件。
合併後的文件可以按照合併請求所指示的合併後類型進行存儲,如果待合併小文件的合併前類型與合併後類型相同,則可以直接插入,如果不同,就需要對待合併小文件的合併前類型進行轉換,以滿足合併請求所指示的合併後類型的要求。合併前類型和合併後類型包括二進位文件的類型和列示存儲文件的類型。其中,二進位文件的類型包括txt等,列示存儲文件的類型包括avro文件格式,parquet文件格式,rcfile文件格式、orcfile文件格式等。
圖4是根據本發明優選實施例的小文件合併方法的示意圖。圖4示出了第一輸入映射表A1、第二輸入映射表A2和輸出映射表B。第一輸入映射表A1中待合併小文件的合併前類型為txt,第二輸入映射表A2中待合併小文件的合併前類型為avro。輸出映射表B的指定合併後類型為avro。
(1)將第一輸入映射表A1中的待合併小文件合併為一個文件塊X,將第二輸入映射表A2中的待合併小文件合併為另一個文件塊Y。
第一輸入映射表A1的待合併小文件的合併前類型與輸出映射表的合併後類型不同,將第一輸入映射表A1中的待合併小文件的類型txt轉換為avro,然後將類型轉換 後的待合併小文件插入到輸出映射表B中作為一個文件塊X。
第二輸入映射表A2的待合併小文件的合併前類型與輸出映射表的合併後類型相同,直接將第二輸入映射表A2中的待合併小文件插入到輸出映射表B中作為另外一個文件塊Y。
這樣,第一輸入映射表A1中的待合併小文件和第二輸入映射表A2中的待合併小文件就分別合併到了映射表B中的兩個文件塊中,得到兩個相同類型的大文件。
(2)將第一輸入映射表A1中的待合併小文件和第二輸入映射表A2中的待合併小文件合併為一個文件塊。
將第一輸入映射表A1中的待合併小文件的類型txt轉換為avro,然後將類型轉換後的待合併小文件插入到輸出映射表B中作為一個文件塊X。同時,將第二輸入映射表A2中的待合併小文件也插入到文件塊X中,也就是將兩種不同類型的小文件合併到同一個文件塊中。
可選地,在將選擇的待合併小文件插入到輸出映射表中合併為大文件之後,該方法還包括:按照輸出映射表更新資料庫中命名節點存儲的地址信息。合併後的文件存儲在輸出映射表所對應的輸出目錄中,通過合併減少了存儲的小文件的數量,相應的輸出映射表存儲的地址信息減少,那麼更新後的命名節點存儲的地址信息也減少,在存儲地址信息和查找合併後的數據時也就減少了內存的佔用。
可選地,合併請求中還攜帶有文件合併後的壓縮格式信息,在數據合併進程對數據存放節點中存放的小文件進行合併之後,該方法還包括:按照合併請求所指示的壓縮格式對合併後的文件進行壓縮。對合併後的文件進行壓縮能夠減少文件佔用的存儲存儲空間,壓縮格式包括但不限於下述格式:gzip,snappy,bzip,lzo。
圖5是根據本發明實施例的小文件合併數據查詢系統的示意圖。該數據查詢系統包括:接收單元10、生成單元30和分發單元50。
接收單元10用於接收客戶端的合併請求。
生成單元30用於根據合併請求生成合併任務。
分發單元50用於將合併任務分發到在資料庫的數據存放節點中運行的數據合併進程中,其中,數據合併進程對數據存放節點中存放的小文件進行合併,得到合併後的文件,其中,數據合併進程為數據查詢系統中的進程。
客戶端向Impala中提交數據處理請求,即數據查詢系統接收客戶端的合併請求。 Impala根據合併請求生成合併任務,並把合併任務分發到運行在Datanode上的Impalad進程中。Impalad直接讀取本地Datanode上存儲的數據,以對小文件進行合併處理。
由於執行小文件合併任務的進程運行在HDFS系統的數據存放節點中,且該進程屬於數據查詢系統Impala的進程,因此,在Impala接收到客戶端發送的合併請求後,能夠快速啟動執行合併的Impalad進程,降低了合併任務的啟動時間,也就提高了合併小文件的合併效率。同時,由於Impalad進程合併時不需要存儲中間結果文件,不需要反覆調用存儲在本地磁碟的中間結果文件,在減少本地磁碟佔用的同時節省大量I/O開銷。
可選地,分發單元包括:創建模塊,用於創建與待合併小文件具有映射關係的輸入映射表和用於建立與合併後的文件的映射關係的輸出映射表,輸入映射表映射的輸入目錄存儲有待合併小文件,輸出映射表映射的輸出目錄中用於存儲合併後的文件。選擇模塊,用於按照合併任務從輸入映射表中選擇兩個以上待合併小文件。合併模塊,用於將選擇的待合併小文件插入到輸出映射表中合併為大文件,其中,大文件為包含兩個以上待合併小文件的文件內容的文件。
輸入映射表對應待合併小文件,根據輸入映射表可以確定待合併小文件的名稱和存儲地址;輸出映射表對應合併後的大文件,通過輸出映射表可以查找到合併後的大文件的名稱和存儲地址。在合併過程中,通過將輸入映射表中的待合併小文件插入到輸出映射表中,完成對一個或多個待合併小文件的合併。其中,合併後得到的大文件包括被合併的一個或者多個待合併小文件的文件內容。即本實施例所提供的合併方法並不是將多個待合併小文件打包成為一個包括多個小文件的集合,而是將多個待合併的小文件合併成一個大文件,該大文件包括多個小文件的文件內容。同時,輸出映射表包括合併後得到的大文件的名稱和地址信息,即減少了多個小文件的內存空間的佔用。
具體地,在進行文件合併時,可以對多個不同類型的小文件進行合併。在對多個不同類型的小文件進行合併時,為每個類型的小文件建立一個輸入映射表,每個輸入映射表只存儲相同類型的小文件。即創建模塊還用於根據第一類型的待合併小文件創建第一輸入映射表,根據第二類型的待合併小文件創建第二輸入映射表。合併模塊還用於將從第一輸入映射表中選擇的待合併小文件和從第二輸入映射表中選擇的待合併小文件插入到輸出映射表,合併為一個大文件。
第一類型的待合併小文件和第二類型的待合併小文件分別插入到輸出映射表中,從而完成多個小文件的合併。其中,在合併時可以是同一類型的待合併小文件合併為一個文件塊,還可以是不同類型的待合併小文件合併為一個文件塊。一個或多個輸入映射表對應的小文件可以合併為一個文件塊,一個輸入映射表對應的小文件也可以存 儲在多個文件塊中。文件塊的大小可以根據採用默認的文件塊的大小,即與HDFS的文件塊大小相同,還可以對每個文件塊的大小進行單獨設置。
在將同一類型的待合併小文件合併為一個文件塊時,將該類型的待合併小文件插入到輸出映射表中;在將不同類型的待合併小文件合併為一個文件塊時,分別對不同類型的待合併小文件進行處理,然後再插入到輸出映射表中。
在將選擇的待合併小文件插入到輸出映射表中合併為大文件時,還需要根據待合併小文件的合併前類型和合併後的文件的合併後類型進行文件的合併,即合併請求中攜帶有文件合併後類型信息,合併模塊包括獲取子模塊,用於獲取合併請求所指示的待合併小文件的合併前類型和合併後類型信息。第一合併子模塊,用於在選擇的待合併小文件的合併前類型與合併後類型信息所指示的合併後類型相同時,將選擇的待合併小文件插入到輸入映射表中合併為大文件。以及第二合併子模塊,用於在選擇的待合併小文件的合併前類型與合併後的文件的合併後類型不同時,將選擇的待合併小文件的合併前類型轉換為合併後類型,並且將轉換後的待合併小文件插入到輸入映射表中合併為大文件。
合併後的文件可以按照合併請求所指示的合併後類型進行存儲,如果待合併小文件的合併前類型與合併後類型相同,則可以直接插入,如果不同,就需要對待合併小文件的合併前類型進行轉換,以滿足合併請求所指示的合併後類型的要求。合併前類型和合併後類型包括二進位文件的類型和列示存儲文件的類型。其中,二進位文件的類型包括txt等,列示存儲文件的類型包括avro文件格式,parquet文件格式,rcfile文件格式、orcfile文件格式等。
可選地,數據查詢系統還包括:更新單元,用於在將選擇的待合併小文件插入到輸出映射表中合併為大文件之後,按照輸出映射表更新資料庫中命名節點存儲的地址信息。合併後的文件存儲在輸出映射表所對應的輸出目錄中,通過合併減少了存儲的小文件的數量,相應的輸出映射表存儲的地址信息減少,那麼更新後的命名節點存儲的地址信息也減少,在存儲地址信息和查找合併後的數據時也就減少了內存的佔用。
可選地,合併請求中還攜帶有文件合併後的壓縮格式信息,該數據查詢系統還包括:壓縮模塊,用於在數據合併進程對數據存放節點中存放的小文件進行合併之後,按照合併請求所指示的壓縮格式對合併後的文件進行壓縮。對合併後的文件進行壓縮能夠減少文件佔用的存儲存儲空間,壓縮格式包括但不限於下述格式:gzip,snappy,bzip,lzo。
需要說明的是,本發明提供的方法實施例在附圖的流程圖示出的步驟可以在諸如 一組計算機可執行指令的計算機系統中執行,並且,雖然在流程圖中示出了邏輯順序,但是在某些情況下,可以以不同於此處的順序執行所示出或描述的步驟。
上述本發明實施例序號僅僅為了描述,不代表實施例的優劣。
在本發明的上述實施例中,對各個實施例的描述都各有側重,某個實施例中沒有詳述的部分,可以參見其他實施例的相關描述。
在本申請所提供的幾個實施例中,應該理解到,所揭露的技術內容,可通過其它的方式實現。其中,以上所描述的數據查詢系統實施例僅僅是示意性的,例如所述單元的劃分,可以為一種邏輯功能劃分,實際實現時可以有另外的劃分方式,例如多個單元或組件可以結合或者可以集成到另一個系統,或一些特徵可以忽略,或不執行。另一點,所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,單元或模塊的間接耦合或通信連接,可以是電性或其它的形式。
所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位於一個地方,或者也可以分布到多個單元上。可以根據實際的需要選擇其中的部分或者全部單元來實現本實施例方案的目的。
另外,在本發明各個實施例中的各功能單元可以集成在一個處理單元中,也可以是各個單元單獨物理存在,也可以兩個或兩個以上單元集成在一個單元中。上述集成的單元既可以採用硬體的形式實現,也可以採用軟體功能單元的形式實現。
所述集成的單元如果以軟體功能單元的形式實現並作為獨立的產品銷售或使用時,可以存儲在一個計算機可讀取存儲介質中。基於這樣的理解,本發明的技術方案本質上或者說對現有技術做出貢獻的部分或者該技術方案的全部或部分可以以軟體產品的形式體現出來,該計算機軟體產品存儲在一個存儲介質中,包括若干指令用以使得一臺計算機設備(可為個人計算機、伺服器或者網絡設備等)執行本發明各個實施例所述方法的全部或部分步驟。而前述的存儲介質包括:U盤、只讀存儲器(ROM,Read-Only Memory)、隨機存取存儲器(RAM,Random Access Memory)、移動硬碟、磁碟或者光碟等各種可以存儲程序代碼的介質。
以上所述僅是本發明的優選實施方式,應當指出,對於本技術領域的普通技術人員來說,在不脫離本發明原理的前提下,還可以做出若干改進和潤飾,這些改進和潤飾也應視為本發明的保護範圍。