HBase二級索引表的查詢方法和裝置制造方法【專利摘要】本發(fā)明提供了一種HBase二級索引表的查詢方法和裝置,包括:判斷HBase源表是否有對應的二級索引表,通過二級索引表查詢HBase表的列中屬性值;如果沒有,根據HBase源表中的列族信息、列信息、列屬性值及HBase源表中對應的Rowkey,創(chuàng)建與HBase源表對應的二級索引表,并同步HBase源表的數據到對應的二級索引表中;如果有,同步HBase源表的插入數據操作或刪除數據操作到對應的二級索引表中。本發(fā)明通過二級索引表能夠實現快速查詢某列屬性值中的所有記錄信息,達到高效率查詢的目的。【專利說明】HBase二級索引表的查詢方法和裝置【
技術領域:
】[0001]本發(fā)明涉及數據處理【
技術領域:
】,尤其涉及一種HBase二級索引表的查詢方法和裝置?!?br>背景技術:
】[0002]在數據高速發(fā)展的時代,分布式體系成為了很重要的角色。在大數據發(fā)展的背景下,分布式集群,分布式數據庫,分布式文件系統(tǒng)都成為受人們關注的焦點。在這個動力趨勢下,Hadoop集群成為較成熟的分布式系統(tǒng)。分布式數據庫HBase在Hadoop生態(tài)系統(tǒng)中正在不斷完善,HBase不同于傳統(tǒng)的數據庫,它是一個適用于非結構化數據存儲的數據庫,具有高擴展性、列存儲、可伸縮、能實時讀寫大數據的特點,因此被很多大公司使用,HBase依據有很好的易用性及鍵值的靈活處理得到廣泛的歡迎。[0003]在HBase表的查詢中,HBase主要是通過Rowkey進行查詢,同時還可以在需要的時候利用filter進行過濾出特定的列的信息來滿足用戶的需求,但是HBase并沒有提供根據列族中某列的屬性值快速查詢出符合條件記錄的功能?!?br/>發(fā)明內容】[0004]為了解決上述技術問題,本發(fā)明提供了一種HBase二級索引表的查詢方法和裝置,能夠實現快速查詢HBase表中某列屬性值中的所有記錄信息,從而提高查詢效率。[0005]為了達到本發(fā)明目的,本發(fā)明提供了一種HBase二級索引表的查詢方法,包括:判斷HBase源表是否有對應的二級索引表,通過二級索引表查詢HBase表的列中屬性值;如果沒有,根據HBase源表中的列族信息、列信息、列屬性值及HBase源表中對應的Rowkey,創(chuàng)建與HBase源表對應的二級索引表,并同步HBase源表的數據到對應的二級索引表中;如果有,同步HBase源表的插入數據操作或刪除數據操作到對應的二級索引表中。[0006]進一步地,通過所述二級索引表查詢HBase表的列中屬性值,包括:通過二級索引表查詢HBase表的列中屬性值的全部記錄。[0007]進一步地,根據HBase源表中的列族信息、列信息、列屬性值及HBase源表中對應的Rowkey,倉ij建與HBase源表對應的二級索引表,并同步HBase源表的數據到對應的二級索引表中,包括:根據HBase源表中的列族信息、列信息、列屬性值及HBase源表中對應的Rowkey,利用revertrow函數和Map函數創(chuàng)建HBase源表對應的二級索引表的Rowkey和屬性值,并同步HBase源表的數據到對應的二級索引表的Rowkey和屬性值中。[0008]進一步地,根據HBase源表中的列族信息、列信息、列屬性值及HBase源表中對應的Rowkey,創(chuàng)建與HBase源表對應的二級索引表,并同步HBase源表的數據到對應的二級索引表中,包括:利用revertrow函數,根據HBase源表中的列族信息、列信息、列屬性值及HBase源表中對應的Rowkey,設置二級索引表的Rowkey;利用Map函數,根據ImmutableBytesWritablekey參數和Resultvalue參數,提取HBase源表中的Rowkey及value值,遍歷每個KeyValue獲取相應二級索引表中的Rowkey,并根據HBase源表的Rowkey和列屬性值設置二級索引表的屬性值;在Map函數中調用revertrow函數,將revertrow函數的返回值Rowkey保存,并根據返回值Rowkey新建Put對象,為新建的Put對象添加相應的屬性值;用ImmutableBytesWritable對象封裝,用Context,write存儲結果。[0009]進一步地,同步HBase源表的插入數據操作或刪除數據操作到對應的二級索引表中,包括:在Put函數或Delete函數中增加HBase源表對應的二級索引表的名稱的參數;在對HBase源表進行插入數據操作或刪除數據操作時,提取插入或刪除數據的Rowkey及value值,根據提取的Rowkey及Value值設置二級索引表的Rowkey及Value值;根據HBase源表對應的二級索引表的名稱的參數,將設置的二級索引表的Rowkey及Value值進行插入操作或者刪除操作。[0010]一種HBase二級索引表的查詢裝置,包括:判斷模塊,用于判斷HBase源表是否有對應的二級索引表,通過所述二級索引表查詢HBase表的列中屬性值;創(chuàng)建模塊,用于根據HBase源表中的列族信息、列信息、列屬性值及HBase源表中對應的Rowkey,創(chuàng)建與HBase源表對應的二級索引表;同步模塊,用于同步HBase源表的數據到對應的二級索引表中;同步HBase源表的插入數據操作或刪除數據操作到對應的二級索引表中。[0011]與現有技術相比,本發(fā)明包括:判斷HBase源表是否有對應的二級索引表,通過二級索引表查詢HBase表的列中屬性值;如果沒有,根據HBase源表中的列族信息、列信息、列屬性值及HBase源表中對應的Rowkey,創(chuàng)建與HBase源表對應的二級索引表,并同步HBase源表的數據到對應的二級索引表中;如果有,同步HBase源表的插入數據操作或刪除數據操作到對應的二級索引表中。本發(fā)明創(chuàng)建與HBase源表對應的二級索引表,并同步HBase源表的數據到對應的二級索引表中,通過該二級索引表能夠實現快速查詢某列屬性值中的所有記錄信息,達到高效率查詢的目的。【專利附圖】【附圖說明】[0012]圖1是本發(fā)明基于HBase二級索引表查詢的架構示意圖。[0013]圖2是本發(fā)明HBase二級索引表的查詢方法的流程示意圖。[0014]圖3是本發(fā)明HBase二級索引表的查詢裝置的結構示意圖?!揪唧w實施方式】[0015]下面結合附圖對本發(fā)明進行進一步的詳細說明。通過足夠詳細的描述這些實施示例,使得本領域技術人員能夠實踐本發(fā)明。在不脫離本發(fā)明的主旨和范圍的情況下,可以對實施做出邏輯的、實現的和其他的改變。[0016]在本發(fā)明中,需要部署分布式集群環(huán)境,例如,該分布式集群環(huán)境是有3個節(jié)點,每個節(jié)點的配置是96G內存,12個core,硬盤是12*1T。[0017]圖1是本發(fā)明基于HBase二級索引表查詢的架構示意圖。在HBase客戶端建立HBase源表,如圖中所示的UserTable,也相應的建立對應的二級索引表,如圖中所示的IndexTable,其中二級索引表中Rowkey是根據HBase源表中的列族信息、列信息、列屬性值及HBase源表中對應的Rowkey構成的,二級索引表中對應的屬性值是HBase源表中Rowkey與列屬性值構成的。[0018]圖2是本發(fā)明HBase二級索引表的查詢方法的流程示意圖,如圖2所示,具體可以包括:[0019]步驟21,判斷HBase源表是否有對應的二級索引表,如果沒有,進入步驟22;如果有,進入步驟23。[0020]在本步驟中,HBase客戶端判斷HBase源表是否有對應的二級索引表,該二級索引表的功能是能實現快速查詢某HBase表的列中屬性值的全部記錄,根據分布式框架的高度并行性能在對二級索引表操作時具有很好的時間效率,根據HBase源表建立相應的二級索引表,可以使得查看滿足某一列的屬性值的操作能快速實現并且可以提高查詢的性能。[0021]步驟22,根據HBase源表中的列族信息、列信息、列屬性值及HBase源表中對應的Rowkey,創(chuàng)建與HBase源表對應的二級索引表,并同步HBase源表的數據到對應的二級索引表中,進入步驟23。[0022]在本步驟中,根據HBase源表中的列族信息、列信息、列屬性值及HBase源表中對應的Rowkey,利用revertrow函數和Map函數創(chuàng)建HBase源表對應的二級索引表的Rowkey和屬性值,并同步HBase源表的數據到對應的二級索引表的Rowkey和屬性值中。[0023]具體地,利用revertrow函數,根據HBase源表中的列族信息、列信息、列屬性值及HBase源表中對應的Rowkey,設置二級索引表的Rowkey。[0024]利用Map函數,根據ImmutableBytesWritablekey參數和Resultvalue參數,提取HBase源表中的Rowkey及value值,遍歷每個KeyValue獲取相應二級索引表中的Rowkey,并根據HBase源表的Rowkey和列屬性值設置二級索引表的屬性值。[0025]在Map函數中調用revertrow函數,將revertrow函數的返回值Rowkey保存,并根據該返回值Rowkey新建Put對象,為該新建的Put對象添加相應的屬性值,該屬性值是提取的HBase源表的Rowkey和列屬性值的組合。用ImmutableBytesWritable對象封裝,用Context,write存儲結果。[0026]二級索引表中Rowkey是根據HBase源表中的列族信息、列信息、列屬性值及HBase源表中相對應的Rowkey構成,二級索引表中對應的屬性值是HBase源表中Rowkey與列屬性的值構成,這樣的結構可以保證在查詢符合HBase源表中某列屬性值的記錄時,操作能快速實現并且可以提高查詢的性能,且可保證二級索引表中的數據與HBase源表一致性。[0027]步驟23,如果對HBase源表進行插入(Put)數據操作或刪除(Delete)數據操作,同步HBase源表的插入數據操作或刪除數據操作到對應的二級索引表中。[0028]在本步驟中,在創(chuàng)建和同步HBase源表對應的二級索引表后,可能有對HBase源表進行插入或刪除數據的操作,因此,在對HBase源表進行插入數據操作或刪除數據操作時,需要根據Put函數或Delete函數插入或刪除相應的二級索引表中的數據。[0029]具體地,在Put函數或Delete函數中增加HBase源表對應的二級索引表的名稱的參數。在對HBase源表進行插入數據操作或刪除數據操作時,提取該插入或刪除數據的Rowkey及value值,根據提取的Rowkey及Value值設置二級索引表的Rowkey及Value值。根據HBase源表對應的二級索引表的名稱的參數,將設置的二級索引表的Rowkey及Value值進行插入操作或者刪除操作。如此,可保證二級索引表中的數據與HBase源表一致性。[0030]本發(fā)明創(chuàng)建與HBase源表對應的二級索引表,并同步HBase源表的數據到對應的二級索引表中,通過該二級索引表能夠實現快速查詢某列屬性值中的所有記錄信息,達到高效率查詢的目的。[0031]圖3是本發(fā)明HBase二級索引表的查詢裝置的結構示意圖,如圖3所示,具體可以包括:[0032]判斷模塊,用于判斷HBase源表是否有對應的二級索引表;[0033]創(chuàng)建模塊,用于根據HBase源表中的列族信息、列信息、列屬性值及HBase源表中對應的Rowkey,創(chuàng)建與HBase源表對應的二級索引表;[0034]同步模塊,用于同步HBase源表的數據到對應的二級索引表中;同步HBase源表的插入數據操作或刪除數據操作到對應的二級索引表中。[0035]HBase二級索引表的查詢裝置是和HBase二級索引表的查詢方法對應的,因此,HBase二級索引表的查詢裝置具體的實現細節(jié)可參看的HBase二級索引表的查詢方法,在此不贅述。[0036]本發(fā)明創(chuàng)建和同步HBase源表對應的二級索引表,通過該二級索引表能夠實現快速查詢某列屬性值中的所有記錄信息,達到高效率查詢的目的。[0037]應當理解,雖然本說明書根據實施方式加以描述,但并非每個實施方式僅包含一個獨立的技術方案,說明書的這種敘述方式僅僅是為清楚起見,本領域技術人員應當將說明書作為一個整體,各實施方式中的技術方案也可以經適當組合,形成本領域技術人員可以理解的其他實施方式。[0038]上文所列出的一系列的詳細說明僅僅是針對本發(fā)明的可行性實施方式的具體說明,它們并非用于限制本發(fā)明的保護范圍,凡未脫離本發(fā)明技藝精神所作的等效實施方式或變更均應包含在本發(fā)明的保護范圍之內。【權利要求】1.一種HBase二級索引表的查詢方法,其特征在于,包括:判斷HBase源表是否有對應的二級索引表,通過所述二級索引表查詢HBase表的列中屬性值;如果沒有,根據HBase源表中的列族信息、列信息、列屬性值及HBase源表中對應的Rowkey,創(chuàng)建與HBase源表對應的二級索引表,并同步HBase源表的數據到對應的二級索引表中;如果有,同步HBase源表的插入數據操作或刪除數據操作到對應的二級索引表中。2.根據權利要求1所述的HBase二級索引表的查詢方法,其特征在于,所述通過所述二級索引表查詢HBase表的列中屬性值,包括:通過所述二級索引表查詢HBase表的列中屬性值的全部記錄。3.根據權利要求1所述的HBase二級索引表的查詢方法,其特征在于,所述根據HBase源表中的列族信息、列信息、列屬性值及HBase源表中對應的Rowkey,創(chuàng)建與HBase源表對應的二級索引表,并同步HBase源表的數據到對應的二級索引表中,包括:根據HBase源表中的列族信息、列信息、列屬性值及HBase源表中對應的Rowkey,利用revertrow函數和Map函數創(chuàng)建HBase源表對應的二級索引表的Rowkey和屬性值,并同步HBase源表的數據到對應的二級索引表的Rowkey和屬性值中。4.根據權利要求1或3所述的HBase二級索引表的查詢方法,其特征在于,所述根據HBase源表中的列族信息、列信息、列屬性值及HBase源表中對應的Rowkey,創(chuàng)建與HBase源表對應的二級索引表,并同步HBase源表的數據到對應的二級索引表中,包括:利用revertrow函數,根據HBase源表中的列族信息、列信息、列屬性值及HBase源表中對應的Rowkey,設置二級索引表的Rowkey;利用Map函數,根據ImmutableBytesWritablekey參數和Resultvalue參數,提取HBase源表中的Rowkey及value值,遍歷每個KeyValue獲取相應二級索引表中的Rowkey,并根據HBase源表的Rowkey和列屬性值設置二級索引表的屬性值;在Map函數中調用revertrow函數,將revertrow函數的返回值Rowkey保存,并根據返回值Rowkey新建Put對象,為新建的Put對象添加相應的屬性值;用ImmutableBytesWritable對象封裝,用Context,write存儲結果。5.根據權利要求1所述的HBase二級索引表的查詢方法,其特征在于,所述同步HBase源表的插入數據操作或刪除數據操作到對應的二級索引表中,包括:在Put函數或Delete函數中增加HBase源表對應的二級索引表的名稱的參數;在對HBase源表進行插入數據操作或刪除數據操作時,提取插入或刪除數據的Rowkey及value值,根據提取的Rowkey及Value值設置二級索引表的Rowkey及Value值;根據HBase源表對應的二級索引表的名稱的參數,將設置的二級索引表的Rowkey及Value值進行插入操作或者刪除操作。6.-種HBase二級索引表的查詢裝置,其特征在于,包括:判斷模塊,用于判斷HBase源表是否有對應的二級索引表,通過所述二級索引表查詢HBase表的列中屬性值;創(chuàng)建模塊,用于根據HBase源表中的列族信息、列信息、列屬性值及HBase源表中對應的Rowkey,創(chuàng)建與HBase源表對應的二級索引表;同步模塊,用于同步HBase源表的數據到對應的二級索引表中;同步HBase源表的插入數據操作或刪除數據操作到對應的二級索引表中。7.根據權利要求6所述的HBase二級索引表的查詢裝置,其特征在于,所述判斷模塊具體用于:通過所述二級索引表查詢HBase表的列中屬性值的全部記錄。8.根據權利要求6所述的HBase二級索引表的查詢裝置,其特征在于,所述創(chuàng)建模塊具體用于:根據HBase源表中的列族信息、列信息、列屬性值及HBase源表中對應的Rowkey,利用revertrow函數和Map函數創(chuàng)建HBase源表對應的二級索引表的Rowkey和屬性值。9.根據權利要求8所述的HBase二級索引表的查詢裝置,其特征在于,所述創(chuàng)建模塊利用revertrow函數和Map函數創(chuàng)建HBase源表對應的二級索引表的Rowkey和屬性值,具體為:所述創(chuàng)建模塊利用revertrow函數,根據HBase源表中的列族信息、列信息、列屬性值及HBase源表中對應的Rowkey,設置二級索引表的Rowkey;利用Map函數,根據ImmutableBytesWritablekey參數和Resultvalue參數,提取HBase源表中的Rowkey及value值,遍歷每個KeyValue獲取相應二級索引表中的Rowkey,并根據HBase源表的Rowkey和列屬性值設置二級索引表的屬性值;在Map函數中調用revertrow函數,將revertrow函數的返回值Rowkey保存,并根據返回值Rowkey新建Put對象,為新建的Put對象添加相應的屬性值;用ImmutableBytesWritable對象封裝,用Context,write存儲結果。10.根據權利要求6所述的HBase二級索引表的查詢裝置,其特征在于,所述同步模塊同步HBase源表的插入數據操作或刪除數據操作到對應的二級索引表中,具體為:在Put函數或Delete函數中增加HBase源表對應的二級索引表的名稱的參數;在對HBase源表進行插入數據操作或刪除數據操作時,提取插入或刪除數據的Rowkey及value值,根據提取的Rowkey及Value值設置二級索引表的Rowkey及Value值;根據HBase源表對應的二級索引表的名稱的參數,將設置的二級索引表的Rowkey及Value值進行插入操作或者刪除操作?!疚臋n編號】G06F17/30GK104217011SQ201410483879【公開日】2014年12月17日申請日期:2014年9月19日優(yōu)先權日:2014年9月19日【發(fā)明者】劉璧怡,郭美思,吳楠申請人:浪潮(北京)電子信息產業(yè)有限公司