新四季網

多維度分組運算方法及系統的製作方法

2023-09-21 16:25:00

多維度分組運算方法及系統的製作方法【專利摘要】本申請提供一種多維度分組運算方法及系統。所述多維度分組運算方法,包括:對海量數據以分布式進行分片以形成多個數據分片;在每個數據分片中,按照每個維度對數據創建索引,將創建的多個所述索引生成為索引文件;在每個數據分片中,使用所述索引文件對所述數據進行在線多維度分組運算;以及對所述每個數據分片的運算結果進行合併運算。通過採用本申請,能夠實現對海量數據進行在線多維度分組的運算,使得可在毫秒級時間內返回對10億級別的海量數據進行的多維度分組運算結果。【專利說明】多維度分組運算方法及系統【
技術領域:
】[0001]本申請涉及數據處理【
技術領域:
】,尤其涉及一種對海量數據執行的多維度分組運算方法及系統。【
背景技術:
】[0002]當前,在數據倉庫的應用系統中有各種各樣的對海量數據進行多維度分組的分析需求。所謂的多維度分組就是以多個維度對海量數據(10億級別的數據)進行分組,並對分組後的結果進行匯總計算,匯總運算包括求sum、max、min、avg等。面對各種分析需求,以往採用了分布式的離線計算方式。例如,傳統的Map-Reduce計算方式由於是離線計算,所以延遲性很高。而作為在線的應用系統,其對服務響應時間要求較高,尤其是對於應用多維度分組的在線系統而言,要求在毫秒級時間內返回分析結果。因而,傳統的離線計算方式無法應用於服務響應時間較高的在線系統。[0003]此外,Hadoop離線計算是一種能夠對大量數據進行分布式處理的分布式計算平臺,在對海量數據的多維度統計分析運算中要藉助於Hadoop的離線計算能力,因為傳統關係型資料庫是無法計算大規模數據,然而眾所周知基於Hadoop計算是一種高吞吐、高延遲的運算,該方式無法滿足用戶在線分析的需求。目前,對數據倉庫而言,為了減少用戶等待的時間,往往是依靠ETL工程師先在Hadoop上將一些要計算的指標事先計算出來並將計算結果導入到關係型資料庫中,然後在用戶提出分析需求時由開發工程師將計算結果在頁面上展現出來。但是,這樣的流程存在的缺點是無法更靈活地對數據進行統計運算,也就是說必須要事先知道要做哪些運算,然後依靠Hadoop事先預計算好結果再將結果展現到頁面。[0004]關係型資料庫系統例如Mysql、Oracle等是可以進行多維度分析的,但是它們所處理的數據量很小,根本無法支持海量數據的多維度分析。雖然Hadoop可以進行海量數據的多維度分析,但是它的多維度分析耗時非常長,要想達到在線的分析只能如上述那樣事先在設定了維度組合條件下的結果在Hadoop中計算好再直接提供查詢。【
發明內容】[0005]本申請的主要目的在於提供一種能夠實時提供對海量數據進行在線多維度分組的多維度分組運算方法及系統,以解決現有技術存在的資料庫系統處理能力差、多維度分組運算僅能採用離線計算而導致的延遲性高、維度組合條件不靈活等問題,其中:[0006]本申請的一個方面,提供一種對海量數據的多維度分組運算方法。其包括:對海量數據以分布式進行分片以形成多個數據分片;在每個數據分片中,按照每個維度對數據創建索引,將創建的多個所述索引生成為索引文件;在每個數據分片中,使用所述索引文件對所述數據進行在線多維度分組運算;以及對所述每個數據分片的運算結果進行合併運算。[0007]根據本申請的所述方法,還包括:接收來自用戶端的與預定多個維度相關的查詢請求,並將所述查詢請求發送到每個數據分片中;以及將所述合併運算的結果返回給用戶端,在每個數據分片中,使用所述索引文件對所述數據進行在線多維度分組運算是按照所述查詢請求進行的。[0008]根據本申請的所述方法,所述每個數據分片具有多個文檔,所述在線多維度分組運算包括:在每個數據分片中,從所述索引文件中獲取多個與所述預定多個維度中的每個維度對應的枚舉值表;建立所述預定多個維度的分組結果和與所述查詢請求對應的運算結果之間的對應關係;按照每個所述文檔的序號,從多個所述枚舉值表中分別獲取與所述預定多個維度對應的維度值,並將獲取到的多個所述維度值進行維度組合;使用所述對應關係,根據維度組合的結果來計算所述與所述查詢請求對應的運算結果。[0009]根據本申請的所述方法,所述在線多維度分組運算還包括:對與所述查詢請求對應的運算結果進行排序的步驟。[0010]根據本申請的所述方法,在所述對海量數據以分布式進行分片的步驟中,使用MurmurHash運算將海量數據劃分為多個數據分片。[0011]根據本申請的所述方法,所述索引是按照每個維度生成的倒排詞表。[0012]根據本申請的所述方法,所述倒排詞表中存儲有每個維度值與所述文檔的序號之間的映射關係。[0013]本申請的另一方面,提供一種對海量數據的多維度分組運算系統。其包括:數據分片裝置,被配置成對海量數據以分布式進行分片以形成多個數據分片;索引生成裝置,被配置成在每個數據分片中,按照每個維度對數據創建索引,將創建的多個所述索引生成為索引文件;運算裝置,被配置成在每個數據分片中使用所述索引文件對所述數據進行在線多維度分組運算;以及合併裝置,被配置成對所述每個數據分片的運算結果進行合併運算。[0014]根據本申請的系統,還包括:接收裝置,被配置成接收來自用戶端的與預定多個維度相關的查詢請求,並將所述查詢請求發送到每個數據分片中;以及發送裝置,被配置成將所述合併運算的結果返回給用戶端,所述運算裝置按照所述查詢請求進行多維度分組運算。[0015]根據本申請的系統,所述每個數據分片具有多個文檔,所述運算裝置包括:獲取裝置,被配置成在每個數據分片中,從所述索引文件中獲取多個與所述預定多個維度中的每個維度對應的枚舉值表;建立裝置,被配置成建立所述預定多個維度的分組結果和與所述查詢請求對應的運算結果之間的對應關係;組合裝置,被配置成按照每個所述文檔的序號,從多個所述枚舉值表中分別獲取與所述預定多個維度對應的維度值,並將獲取到的多個所述維度值進行維度組合;計算裝置,被配置成使用所述對應關係,根據維度組合的結果來計算所述與所述查詢請求對應的運算結果。[0016]根據本申請的系統,所述運算還包括用於對與所述查詢請求對應的運算結果進行排序的排序裝置。[0017]根據本申請的系統,所述數據分片裝置使用MurmurHash運算將海量數據劃分為多個數據分片。[0018]根據本申請的系統,所述索引是按照每個維度生成的倒排詞表。[0019]根據本申請的系統,所述倒排詞表中存儲有每個維度值與文檔的序號之間的映射關係。[0020]與現有技術相比,根據本申請的技術方案,能夠實現對海量數據進行在線多維度分組的運算,使得可在毫秒級時間內返回對10億級別的海量數據進行的多維度分組運算結果。【專利附圖】【附圖說明】[0021]此處所說明的附圖用來提供對本申請的進一步理解,構成本申請的一部分,本申請的示意性實施例及其說明用於解釋本申請,並不構成對本申請的不當限定。在附圖中:[0022]圖1是本申請實施例的多維度分組運算方法的示意流程圖;[0023]圖2是本申請實施例的在線多維度分組運算的流程圖;[0024]圖3是本申請實施例的合併運算的結構示意圖;[0025]圖4是本申請實施例的多維度分組系統的結構示意圖;[0026]圖5是本申請實施例的運算裝置的結構示意圖。【具體實施方式】[0027]本申請的主要思想在於,底層使用Solr的分片(Sharding)功能,將海量數據分散到不同的數據分片(以下,也稱作"shard")中,並且使用Solr對每個數據分片中的海量數據創建索引,並生成倒排索引文件,以達到分布式檢索的目的。但是,眾所周知Solr的FacetQuery(分面查詢)功能具有隻支持單維度分組的查詢特性,它無法支持多維度分組查詢,而本申請採用哈希表的數據結構來實現對海量數據的多維度分組。另外,關於Solr,在後面對其進行詳細說明。[0028]為使本申請的目的、技術方案和優點更加清楚,以下結合附圖及具體實施例,對本申請作進一步地詳細說明。[0029]〔傳統的離線計算方式〕[0030]首先,對使用傳統的離線計算方式進行多維度分組運算的例子進行說明。[0031]例如,數據倉庫中存儲有全站的全量數據,其數據量是海量級別。很多的分析工作均是針對海量級別的數據進行分析的。例如,預測到用戶端有可能提出"在北京地區使用X產品的男性用戶有多少人?"這樣的查詢請求。從這個查詢請求可以看出,該查詢請求具有固定的維度組合,即:維度組合是北京、X產品、男性。在這種情況下,傳統的計算方法是:事先通過Hadoop離線計算方式將X產品的使用記錄中屬於北京地區的男性用戶的數量計算出來並將計算結果保存到傳統關係型資料庫中,當從用戶端發出上述在線的查詢請求時,直接將預先保存在傳統關係型資料庫中的計算結果返回給用戶端。但是,這種預測的分析需求是有限的,對於在線系統來說,來自用戶端的查詢請求具有任意性,往往是任意的多個維度的組合,因此,Hadoop離線計算方式遠遠無法滿足這種複雜多樣的分析需求。再例如,面對在任意城市(340個城市)*使用A網站的任意產品(假設500個站上產品)*任意性別(男、女)的用戶有多少人這樣的查詢請求,按照傳統的離線計算方法,需要將340個城市、500個產品、男女用戶這些維度的組合全部通過離線計算方式計算出來,對於維度組合方式來說,就有340*500*2=340000種組合方式,也就是說僅僅一個分析場景下的計算結果的數據就有340000個,假設增加了一個分析場景即增加年齡這個維度,那麼,計算結果的數據的集合便成笛卡兒積式增長,這樣的維度組合的計算效率和計算結果的存儲成本是無法接受的。而且,應用系統存在各種各樣的對海量數據進行多維度分組的分析需求,無法窮舉出維度的組合來進行分析運算,如上述的例子,就有可能出現(任意城市*使用的任意產品*任意性別)、(任意城市*任意性別)、(任意城市*使用的任意產品)或(任意城市*使用的任意產品*任意性別*任意年齡)等等的維度組合方式。因此,必須實現一個在線的多維度分組運算的系統,當用戶提出查詢請求時系統能立刻進行多維度分組的運算,並且能夠在秒級時間內將結果計算出來。[0032]在此,上述的數據倉庫是決策支持系統(dss)和聯機分析應用數據源的結構化數據環境。數據倉庫研究和解決從資料庫中獲取信息的問題。數據倉庫的特徵在於面向主題、集成性、穩定性和時變性。數據倉庫與資料庫的區別點之一是:資料庫的數據是實時更新的數據,而數據倉庫的數據是按預定時間(例如一日)進行更新的數據。[0033]〔Solr的單維度分組的原理〕[0034]其次,對Solr的單維度分組的原理進行說明。[0035]Solr是指一個基於Lucene的分布式全文搜索伺服器。簡單來說,Solr是一個全文檢索系統,它可以對原始的文本數據進行加工,建立倒排索引,從而實現數據的快速查詢。Solr作為一個全文檢索系統,其本身僅支持單維度分組,也叫分面查詢(FacetQuery)。它可以從不同的角度(即單維度)對數據進行歸類整合,有助於用戶進一步了解需要獲取的數據信息。例如,當針對大批量用戶的數據信息需要從性別角度進行歸類時,可以使用Solr將該數據信息分為男用戶的信息和女用戶的信息。但是,面對從例如性別和年齡的角度將上述數據信息進行歸類,即將數據信息分為〈男一1?10歲〉、〈男一11?20歲〉…等這樣的需求時,由於Solr不支持交叉面(即多維度分組)的數據歸類,所以在這種情況無法使用Solr。[0036]Solr的單維度分組的原理是:簡單來說,就是從倒排索引文件中取得單個維度的倒排詞表,這個倒排詞表就是單維度分組的結果。例如,在對性別這個維度建立倒排索引時,這個維度的倒排詞表就是男和女。當然,倒排詞表只是按照單個維度對數據進行分組,往往在對數據進行分組的同時還伴隨著分組後的計算,比如男性用戶數是多少,女性用戶數是多少。[0037]根據本申請的實施例,提供了一種多維度分組運算方法。[0038]〔多維度分組運算方法的流程〕[0039]參考圖1,圖1是本申請實施例的多維度分組運算方法的示意流程圖。下面,詳細地說明本申請涉及的多維度分組運算方法的流程。[0040]如圖1所示,在步驟S101中,對海量數據以分布式進行分片以形成多個數據分片。具體來說,本申請採用了Hadoop分布式系統,其包括多個計算節點和一個合併節點。因此,"對海量數據進行分片"實際上就是將海量數據分散到不同的計算節點上。換句話說,就是將海量數據分成多個部分,並將每個部分存儲到Hadoop分布式系統中的每個計算節點上。以下,有時也將每個計算節點稱為每個數據分片。[0041]這裡的"海量數據"是指一批數據量非常大的數據,其來自於數據倉庫,並存儲在Hadoop系統中。由於普通單機運算是無法實現對海量數據的計算,所以對海量數據的運算只能通過Hadoop的分布式計算方式來進行,因此本申請藉助於Hadoop的分布式計算方式來實現對海量數據的多維分組運算。[0042]在該步驟中,為了將海量數據均勻地分散到多個計算節點上,本申請採用了MurMurHash算法來作為分散海量數據的方法。這種MurMurHash算法是一種非加密一致性HASH(哈希)算法,具有高運算性能。通過對海量數據中的每一條數據執行MurMurHash算法,就能夠將海量數據分別映射到不同的計算節點上。舉例來說,例如一條用戶信息包括名字、性別、年齡、出生地等屬性,那麼經過MurMurHash算法後就可以得到〈劉文,男,25,哈爾濱〉這樣的一條記錄。通過執行MurMurHash算法,可以保證數據能夠均勻地分散到各計算節點中。[0043]接著,在步驟S102中,在每個數據分片中,按照每個維度對數據創建索引,並將創建的多個所述索引生成為索引文件。換句話說,在每個計算節點上均生成一個索引文件,而該索引文件中包含多個與單維度對應的索引。[0044]具體來說,在每個數據分片中,每一條數據稱為一個文檔,因此每個數據分片均具有多個文檔。通過使用Solr對每個數據分片中的數據進行加工,建立倒排索引。建立倒排索引是由於這種存儲結構查詢效率高、實時性高的緣故。使用倒排索引,能夠加快數據查詢的速度。實際上,建立的每個索引都是按照單個維度生成的倒排詞表。該倒排詞表中存儲有每個維度值與文檔的序號之間的映射關係。[0045]下面,舉例來說明倒排詞表。[0046][例1]假設有如下5個文檔:[0047]1.(A,a,I)[0048]2.(A,b,I)[0049]3.(B,c,II)[0050]4.(C,d,III)[0051]5.(C,d,III)[0052]其中,1?5表不文檔序號,(A?C)、(a?d)、(I?III)表不三種不同的維度對應的維度值,則由這5個文檔建立的倒排詞表為:[0053]A-1,2a-1I-1,2[0054]B-3b-2II-3[0055]C-4,5c-3111-4,5[0056]d-4,5[0057]如上述這樣,例如,在該倒排詞表中存在維度值A與文檔序號1、2的映射關係。通過使用倒排詞表,能夠直接得到每個維度值的具體位置信息,從而使得查詢的速度更快。[0058]接著,在步驟S103中,接收來自用戶端的與預定多個維度相關的查詢請求,並將所述查詢請求發送到每個數據分片中。也就是說,這裡的查詢請求就是由用戶端任意指定的維度組合。預定多個維度是至少兩個以上的維度。為了在每個數據分片中針對用戶端指定的維度組合進行多維度分組運算,需要將用戶端的查詢請求分發到各數據分片中。[0059]此外,在該步驟S102中,針對每個數據分片中所有的維度生成索引文件,而在後述的步驟S104中僅針對用戶端任意指定的多個維度進行多維度分組運算。當然,即使用戶端不指定多個維度,也可以針對所有的維度進行多維度分組運算。[0060]接著,在步驟S104中,在每個數據分片中,按照來自用戶端的查詢請求,使用索引文件對數據進行在線多維度分組運算。[0061]〔在線多維度分組運算〕[0062]圖2是本申請實施例的在線多維度分組運算的流程圖。具體來說,如圖2所示,在線多維度分組運算包括:[0063]在步驟S201中,在每個數據分片中,從索引文件中獲取多個與預定多個維度中的每個維度對應的枚舉值表。也就是說,由於索引文件中包含所有維度的倒排詞表,所以從在步驟S102中生成的索引文件中可以獲取到每個維度的枚舉值表,每個枚舉值表與用戶端指定的多個維度中的每個維度相對應。在此,枚舉值表示從倒排詞表中獲取到的每個維度的所有值的意思,枚舉值表是包含每個維度的所有值的列表。實際上,這一步驟是求出單維度的分組結果。[0064]基於上述例1來進行說明。在每一個數據分片中,針對用戶指定的多個維度,根據Solr單維度分組的原理,分別從各個維度所對應的倒排詞表中獲得每個維度的枚舉值表。即:{A,A,B,C,C};{a,b,c,d,d};{I,I,II,III,III}。[0065]在步驟S202中,建立預定多個維度的分組結果和與查詢請求對應的運算結果之間的對應關係。換句話說,建立預定多個維度的分組結果與分組後的相應的運算結果之間的對應關係。在該步驟中,通過定義一個"哈希表"數據結構來建立對應關係。建立對應關係的目的是,當獲得多維度分組的結果時,可以通過所建立的對應關係得到分組後的運算結果。哈希表(Hashtable)也稱為散列表,它是根據關鍵碼值(Keyvalue)而直接進行訪問的數據結構。也就是說,它通過把關鍵碼值映射到表中一個位置來訪問記錄,以加快查找的速度。這個映射函數叫做散列函數,存放記錄的數組叫做散列表。在本申請中,哈希表的key保存有多維分組的結果,value保存有多維分組後的計算結果,這裡的計算包括sum、max、min、avg、count等。也就是說,通過定義哈希表,建立了多維度分組的結果與分組後的計算結果之間的對應關係。當然,建立對應關係的方法不限於哈希表的數據結構,只要能夠建立多維度分組的結果與分組後的計算結果之間的對應關係,可以採用任意的方法。[0066]在步驟S203中,按照每個文檔的序號,從多個枚舉值表中分別獲取與預定多個維度對應的維度值,並將獲取到的多個維度值進行維度組合。換句話說,先按照文檔的序號,從枚舉值表中分別獲取多個維度值,然後通過將獲取到的多個維度值進行組合,就得到了預定多個維度的分組結果。實際上,該步驟就是使用枚舉值表來獲取多維度分組的結果。[0067]下面,基於上述例1來進行說明。首先,按照文檔序號1,從三個枚舉值表{A,A,B,C,C}、{a,b,c,d,d}、{I,I,II,III,III}中分別獲取到A、a、I這三個維度值。然後,將A、a、I進行維度組合,得到(A、a、I)。同樣地,按照文檔序號2從枚舉值表中能得到(A、b、I),按照文檔序號3從枚舉值表中能得到(B、c、II),按照文檔序號4和5分別從枚舉值表中得到(C,d,III)。[0068]在步驟S204中,使用建立的對應關係,根據維度組合的結果來計算與查詢請求對應的運算結果。也就是說,在步驟S203中求出了多個維度的分組的結果之後,根據在步驟S202中所建立的預定多個維度的分組結果和與查詢請求對應的運算結果之間的對應關係,就能容易地得到與用戶端的查詢請求對應的運算結果。進而,在該步驟中,根據通過步驟S203得到的維度組合的結果計算出與查詢請求對應的運算結果之後,在哈希表中查找是否已有與每個維度組合對應的計算結果,如果已有計算結果,則將新的計算結果與已有的計算結果進行合併運算,反之如果沒有計算結果,則將新的結果插入到哈希表中。[0069]下面,基於例1進行說明。[0070]假設用戶端提出的查詢請求是在大寫字母、小寫字母、羅馬數字這三個維度下求出交叉組count數。[0071]首先,在步驟S201中得到了枚舉值表{A,A,B,C,C}、{a,b,c,d,d}、{I,I,II,III,III},接著,在步驟S202中建立一個空白的哈希表。然後,在步驟S203中得到了維度的分組結果即(A、b、I),(B、c、II),(C,d,III),(C,d,III)。接著,在步驟S204中,由第一個交叉組(A、a、I)得到該交叉組的count數為1,然後在哈希表中查找是否存在交叉組(A、a、I),由於該哈希表是一個空白表,所以該表中沒有查找到交叉組(A、a、I),因此將交叉組(A、a、I)的count數即1插入到哈希表中。同樣地,第二個交叉組(B、c、II)的count數也為1,並將交叉組(B、c、II)的count數即1插入到哈希表中。同樣地,第三個交叉組(C,d,III)的count數為1,在哈希表中也查找不到該交叉組,所以將交叉組(C,d,III)count數插入到哈希表中。接下來,第四個交叉組(C,d,III)的count數也為1,但由於在哈希表中能夠查找到交叉組(C,d,III),所以將第四個交叉組的count數"1"與已有的計算結果"1"相加而得到2。即可得到:[0072]如上所述,通過步驟S204能夠得到與用戶端的查詢請求對應的運算結果。[0073]此外,當用戶端存在需要對計算結果進行排序的情況下,可以繼續執行步驟S205。例如,用戶端想要知道北京地區使用A網站的男性用戶的比例是多少。[0074]在步驟S205中,對與用戶端的查詢請求對應的運算結果進行排序。此時,可以使用堆排序來執行步驟S205。這裡的堆排序又稱為堆積排序(Heapsort),它是指利用堆積樹(堆)這種資料結構所設計的一種排序算法,可以利用數組的特點快速定位指定索引的元素。由於本申請採用了用Solr創建索引的方法,所以最適合採用堆排序。當然,排序的方法不限於此,只要能達到對計算結果進行排序的效果,可以使用其他公知的排序方法。[0075]以上述例子為例來進行說明時,通過對步驟S204的計算結果進行堆排序後可以得到如下結果:[0076]C,d,II-2[0077]A,a,I-1[0078]A,b,I-1[0079]B,c,II-1[0080]此外,在對每個多維度分組後的count數進行堆排序後,將分組後的count數排在前幾名的多維度的分組結果通過後述的步驟S105的運算後返回給用戶端。[0081]接著,在步驟S105中,對每個數據分片的運算結果進行合併運算。如圖3所示,圖3示出了本申請實施例的合併運算的結構示意圖。也就是說,先在每個數據分片(即圖3中的本地計算節點1?本地計算節點3)中對數據進行在線多維度分組運算(即圖3中的多維度本地計算),然後再將各數據分片的計算結果(即3中的計算結果1、計算結果2以及計算結果3)發送到合併節點,通過合併節點對各計算結果進行合併運算。該合併運算包括求sum、max、min、avg等的運算。[0082]最後,在步驟S106中,將合併運算的結果返回給用戶端。也就是說,將合併節點計算出的合併結果即最終結果返回給用戶端。[0083]如上所述,通過採用本申請涉及的多維度分組運算,能夠實現對海量數據進行在線多維度分組的運算,使得可在毫秒級時間內返回對10億級別的海量數據進行的多維度分組運算結果。並且,可以通過如下式子計算時間複雜度,即:[0084]0(Kn+mlogm)[0085]其中,0為時間複雜度,K為維度數,n為文檔數,m為交叉後的分組數。[0086]〔多維度分組系統〕[0087]下面,對本申請涉及的多維度分組系統進行說明。[0088]圖4是本申請實施例的多維度分組系統的結構示意圖。如圖4所示,多維度分組系統400包括數據分片裝置401、索引生成裝置402、接收裝置403、運算裝置404、合併裝置405以及發送裝置406。[0089]數據分片裝置401,被配置成對海量數據以分布式進行分片以形成多個數據分片。該數據分片裝置401使用MurmurHash運算將海量數據劃分為多個數據分片,使得保證數據能夠均勻地分散到各數據分片中。[0090]索引生成裝置402,被配置成在每個數據分片中,按照每個維度對數據創建索引,將創建的多個索引生成為索引文件。所述索引是按照每個維度生成的倒排詞表。在該倒排詞表中存儲有每個維度值與文檔的序號之間的映射關係。[0091]接收裝置403,被配置成接收來自用戶端的與預定多個維度相關的查詢請求,並將查詢請求發送到每個數據分片中。[0092]運算裝置404,被配置成在每個數據分片中使用索引文件對數據進行在線多維度分組運算。所述運算裝置按照所述查詢請求進行多維度分組運算。[0093]合併裝置405,被配置成對每個數據分片的運算結果進行合併運算。[0094]發送裝置406,被配置成將合併運算的結果返回給用戶端。[0095]圖5是本申請實施例的運算裝置404的結構示意圖。如圖5所示,運算裝置404進一步包括:獲取裝置[0096]獲取裝置501,被配置成在每個數據分片中,從索引文件中獲取多個與預定多個維度中的每個維度對應的枚舉值表。[0097]建立裝置502,被配置成建立預定多個維度的分組結果和與查詢請求對應的運算結果之間的對應關係。[0098]組合裝置503,被配置成按照每個文檔的序號,從多個枚舉值表中分別獲取與預定多個維度對應的維度值,並將獲取到的多個維度值進行維度組合。[0099]計算裝置504,被配置成使用對應關係,根據維度組合的結果來計算與查詢請求對應的運算結果。[0100]排序裝置505,被配置成對與查詢請求對應的運算結果進行排序。[0101]本申請的系統400所包括的各個裝置的具體實施與本申請的方法中的步驟的具體實施是相對應的,為了不模糊本申請,在此不再對各個裝置的具體細節進行描述。[0102]本申請的多維度分組運算方法及系統能夠在任何可以對海量數據進行在線多維度分組處理的應用系統中應用。所述應用系統可以包括但不限於:移動終端設備、膝上型電腦、平板電腦、個人數字助理等。[0103]通過採用本申請的多維度分組運算方法及系統,既彌補了傳統資料庫在進行實時運算時無法處理海量數據的缺點,又彌補了藉助Hadoop以多維度計算海量數據時無法達到實時性的缺點,還彌補了Solr在做海量數據實時計算時無法處理多維度計算的缺陷。艮P,本申請實現了對海量數據實時地進行多維度分組運算。[0104]專業人員應該還可以進一步意識到,結合本文中所公開的實施例描述的各示例的單元、裝置及算法步驟,能夠以電子硬體、計算機軟體或者二者的結合來實現,為了清楚地說明硬體和軟體的可互換性,在上述說明中已經按照功能一般性地描述了各示例的組成及步驟。這些功能究竟以硬體還是軟體方式來執行,取決於技術方案的特定應用和設計約束條件。專業技術人員可以對每個特定的應用來使用不同方法來實現所描述的功能,但是這種實現不應認為超出本申請的範圍。[0105]結合本文中所公開的實施例描述的方法或算法的步驟可以用硬體、處理器執行的軟體模塊,或者二者的結合來實施。軟體模塊可以置於隨機存儲器(RAM)、內存、只讀存儲器(ROM)、電可編程ROM、電可擦除可編程ROM、寄存器、硬碟、可移動磁碟、CD-ROM、或【
技術領域:
】內所公知的任意其它形式的存儲介質中。[0106]應當注意,本申請的實施方式可以通過硬體、軟體或者軟體和硬體的結合來實現。硬體部分可以利用專用邏輯來實現;軟體部分可以存儲在存儲器中,由適當的指令執行系統,例如微處理器或者專用設計硬體來執行。本領域的普通技術人員可以理解上述的設備和方法可以使用計算機可執行指令和/或包含在處理器控制代碼中來實現,例如在諸如磁碟、CD或DVD-ROM的載體介質、諸如只讀存儲器(固件)的可編程的存儲器或者諸如光學或電子信號載體的數據載體上提供了這樣的代碼。本申請的設備及其模塊可以由諸如超大規模集成電路或門陣列、諸如邏輯晶片、電晶體等的半導體、或者諸如現場可編程門陣列、可編程邏輯設備等的可編程硬體設備的硬體電路實現,也可以用由各種類型的處理器執行的軟體實現,也可以由上述硬體電路和軟體的結合例如固件來實現。[0107]應當注意,儘管在上文詳細描述中提及了設備的若干模塊或子模塊,但是這種劃分僅僅並非強制性的。實際上,根據本申請的實施方式,上文描述的兩個或更多模塊的特徵和功能可以在一個模塊中具體化。反之,上文描述的一個模塊的特徵和功能可以進一步劃分為由多個模塊來具體化。[0108]此外,儘管在附圖中以特定順序描述了本申請方法的操作,但是,這並非要求或者暗示必須按照該特定順序來執行這些操作,或是必須執行全部所示的操作才能實現期望的結果。相反,流程圖中描繪的步驟可以改變執行順序。附加地或備選地,可以省略某些步驟,將多個步驟合併為一個步驟執行,和/或將一個步驟分解為多個步驟執行。[0109]以上所述僅為本申請的實施例而已,並不用於限制本申請,對於本領域的技術人員來說,本申請可以有各種更改和變化。凡在本申請的精神和原則之內,所作的任何修改、等同替換、改進等,均應包含在本申請的權利要求範圍之內。【權利要求】1.一種對海量數據的多維度分組運算方法,包括:對海量數據以分布式進行分片以形成多個數據分片;在每個數據分片中,按照每個維度對數據創建索引,將創建的多個所述索引生成為索引文件;在每個數據分片中,使用所述索引文件對所述數據進行在線多維度分組運算;以及對所述每個數據分片的運算結果進行合併運算。2.根據權利要求1所述的方法,還包括:接收來自用戶端的與預定多個維度相關的查詢請求,並將所述查詢請求發送到每個數據分片中;以及將所述合併運算的結果返回給用戶端,在每個數據分片中,使用所述索引文件對所述數據進行在線多維度分組運算是按照所述查詢請求進行的。3.根據權利要求2所述的方法,其中,所述每個數據分片具有多個文檔,所述在線多維度分組運算包括:在每個數據分片中,從所述索引文件中獲取多個與所述預定多個維度中的每個維度對應的枚舉值表;建立所述預定多個維度的分組結果和與所述查詢請求對應的運算結果之間的對應關係;按照每個所述文檔的序號,從多個所述枚舉值表中分別獲取與所述預定多個維度對應的維度值,並將獲取到的多個所述維度值進行維度組合;使用所述對應關係,根據維度組合的結果來計算所述與所述查詢請求對應的運算結果。4.根據權利要求3所述的方法,其中,所述在線多維度分組運算還包括:對與所述查詢請求對應的運算結果進行排序的步驟。5.根據權利要求1所述的方法,其中,在所述對海量數據以分布式進行分片的步驟中,使用MurmurHash運算將海量數據劃分為多個數據分片。6.根據權利要求1所述的方法,其中,所述索引是按照每個維度生成的倒排詞表。7.根據權利要求6所述的方法,其中,所述倒排詞表中存儲有每個維度值與所述文檔的序號之間的映射關係。8.-種對海量數據的多維度分組運算系統,包括:數據分片裝置,被配置成對海量數據以分布式進行分片以形成多個數據分片;索引生成裝置,被配置成在每個數據分片中,按照每個維度對數據創建索引,將創建的多個所述索引生成為索引文件;運算裝置,被配置成在每個數據分片中使用所述索引文件對所述數據進行在線多維度分組運算;以及合併裝置,被配置成對所述每個數據分片的運算結果進行合併運算。9.根據權利要求8所述的系統,還包括:接收裝置,被配置成接收來自用戶端的與預定多個維度相關的查詢請求,並將所述查詢請求發送到每個數據分片中;以及發送裝置,被配置成將所述合併運算的結果返回給用戶端,所述運算裝置按照所述查詢請求進行多維度分組運算。10.根據權利要求9所述的系統,其中,所述每個數據分片具有多個文檔,所述運算裝置包括:獲取裝置,被配置成在每個數據分片中,從所述索引文件中獲取多個與所述預定多個維度中的每個維度對應的枚舉值表;建立裝置,被配置成建立所述預定多個維度的分組結果和與所述查詢請求對應的運算結果之間的對應關係;組合裝置,被配置成按照每個所述文檔的序號,從多個所述枚舉值表中分別獲取與所述預定多個維度對應的維度值,並將獲取到的多個所述維度值進行維度組合;計算裝置,被配置成使用所述對應關係,根據維度組合的結果來計算所述與所述查詢請求對應的運算結果。11.根據權利要求10所述的系統,其中,所述運算還包括用於對與所述查詢請求對應的運算結果進行排序的排序裝置。12.根據權利要求8所述的系統,其中,所述數據分片裝置使用MurmurHash運算將海量數據劃分為多個數據分片。13.根據權利要求8所述的系統,其中,所述索引是按照每個維度生成的倒排詞表。14.根據權利要求13所述的系統,其中,所述倒排詞表中存儲有每個維度值與文檔的序號之間的映射關係。【文檔編號】G06F17/30GK104063376SQ201310086336【公開日】2014年9月24日申請日期:2013年3月18日優先權日:2013年3月18日【發明者】鄭博文,袁俊強申請人:阿里巴巴集團控股有限公司

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀