欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種基于solr的Hbase秒級(jí)查詢方案的制作方法

文檔序號(hào):12598372閱讀:2424來源:國(guó)知局
一種基于solr的Hbase秒級(jí)查詢方案的制作方法與工藝

本發(fā)明涉及hbase技術(shù)領(lǐng)域,尤其涉及一種基于solr的Hbase秒級(jí)查詢方案。



背景技術(shù):

Solr是apache旗下基于lucene的一個(gè)完整的搜索服務(wù)。Solr主要包括兩部分核心組件:索引組件和搜索組件。索引組件用于將需要索引的數(shù)據(jù)在搜索程序中建立索引,而搜索組件用于響應(yīng)客戶端的請(qǐng)求來查詢索引。Solr是一個(gè)高性能,采用Java5開發(fā),基于Lucene的全文搜索服務(wù)器。同時(shí)對(duì)其進(jìn)行了擴(kuò)展,提供了比Lucene更為豐富的查詢語(yǔ)言,同時(shí)實(shí)現(xiàn)了可配置、可擴(kuò)展并對(duì)查詢性能進(jìn)行了優(yōu)化,并且提供了一個(gè)完善的功能管理界面,是一款非常優(yōu)秀的全文搜索引擎。文檔通過Http利用XML加到一個(gè)搜索集合中。查詢?cè)摷弦彩峭ㄟ^http收到一個(gè)XML/JSON響應(yīng)來實(shí)現(xiàn)。它的主要特性包括:高效、靈活的緩存功能,垂直搜索功能,高亮顯示搜索結(jié)果,通過索引復(fù)制來提高可用性,提供一套強(qiáng)大Data Schema來定義字段,類型和設(shè)置文本分析,提供基于Web的管理界面等。

Hbase是Hadoop家族針對(duì)海量數(shù)據(jù)的分布式存儲(chǔ)方案,當(dāng)我們通過rowkey對(duì)存于Hbase中的海量數(shù)據(jù)進(jìn)行查詢時(shí)可以達(dá)到秒級(jí)的響應(yīng),實(shí)現(xiàn)比較理想的用戶體驗(yàn)。但是,當(dāng)在比較復(fù)雜的場(chǎng)景下,如需要對(duì)數(shù)據(jù)做多條件查詢時(shí),Hbase提供的解決方案都不是很理想。

針對(duì)多條件查詢,Hbase本身現(xiàn)階段有兩種比較主流的解決方案:

1、通過協(xié)處理器在插入數(shù)據(jù)時(shí)手動(dòng)建索引表

Hbase中的協(xié)處理器有兩種:Observer和Endpoint。Observer類似于關(guān)系型數(shù)據(jù)庫(kù)中的觸發(fā)器,Endpoint類似于關(guān)系型數(shù)據(jù)庫(kù)中的存儲(chǔ)過程。

我們?cè)诶脜f(xié)處理器建索引表時(shí)使用的是Observer,即在往Hbase表中插入數(shù)據(jù)時(shí),加入Observer操作,讓每插入一條數(shù)據(jù)前都調(diào)用我們自定義的業(yè)務(wù)邏輯在索引表中生成需要索引字段的記錄。

這樣在我們針對(duì)Hbase進(jìn)行多條件查詢時(shí),我們的查詢操作分成兩步:第一步首先根據(jù)查詢條件在索引表進(jìn)行查詢,查詢對(duì)應(yīng)結(jié)果的rowkey,第二步再根據(jù)rowkey去主表查詢我們需要的數(shù)據(jù)。

這種方案有幾個(gè)比較大的問題:

(1)協(xié)處理器很不穩(wěn)定

在現(xiàn)版本Hbase中,我們自己測(cè)試通過協(xié)處理器生成索引時(shí),一旦在建立索引過程中代碼拋出異常,整個(gè)Hadoop集群都會(huì)掛掉。

(2)建索引會(huì)影響插入數(shù)據(jù)的速度

由于插入數(shù)據(jù)與建索引是一個(gè)同步的過程,所以建索引的操作會(huì)在很大程度上影響插入數(shù)據(jù)的速度。

(3)需要索引的字段必須在數(shù)據(jù)插入前確定,后期不能修改

插入數(shù)據(jù)同時(shí)建索引的另一個(gè)問題就是我們必須一次性確定好所有需要建立索引的字段,如果后期需要在一個(gè)新的字段上建立索引,之前已經(jīng)插入的數(shù)據(jù)是不會(huì)自動(dòng)再建立索引的。

(4)每個(gè)索引字段對(duì)應(yīng)一個(gè)索引表效率不高

為了后期使用索引時(shí)靈活,一般在建立索引表時(shí)會(huì)為每個(gè)單獨(dú)的字段都建立一個(gè)索引表。以字段value作為索引表的rowkey,以原表的rowkey作為索引表的字段。這種方式雖然會(huì)方便我們靈活的做多條件查詢,但同時(shí)會(huì)增加索引表的數(shù)量,同時(shí)當(dāng)單詞查詢的查詢條件比較多時(shí),需要進(jìn)行多次的索引表查詢操作,對(duì)查詢的響應(yīng)也會(huì)有比較大的影響。

2、使用Hbase自帶的過濾器在服務(wù)端過濾

Hbase自帶很多種類的過濾器,同時(shí)我們也可以自定義自己的過濾器。當(dāng)我們?cè)诓樵兊臅r(shí)候使用過濾器,Hbase會(huì)在集群的服務(wù)端對(duì)查詢的結(jié)果數(shù)據(jù)按過濾器的邏輯進(jìn)行過濾。

但同樣,這種方案也有一個(gè)問題:過濾器依然需要掃描數(shù)據(jù),效率低。

過濾器雖然是在服務(wù)端進(jìn)行過濾,但是依然需要將所有符合rowkey查詢條件的數(shù)據(jù)全部查詢出來,然后再在這些數(shù)據(jù)上進(jìn)行掃描,過濾掉不符合過濾條件的數(shù)據(jù)。這個(gè)過程在原始查詢數(shù)據(jù)量比較大時(shí)會(huì)占用很多服務(wù)端內(nèi)存,同時(shí)掃描時(shí)間也會(huì)很長(zhǎng),光這一個(gè)過程的耗時(shí)就已經(jīng)不能達(dá)到秒級(jí)查詢的要求。

基于以上兩種方案都有某些特性不能滿足我們的需求,我們提出了一種基于solr的Hbase秒級(jí)查詢方案。



技術(shù)實(shí)現(xiàn)要素:

本發(fā)明的目的是為了解決現(xiàn)有技術(shù)中存在的缺點(diǎn),而提出的一種基于solr的Hbase秒級(jí)查詢方案。

一種基于solr的Hbase秒級(jí)查詢方案,包括以下步驟:

步驟1、將原始數(shù)據(jù)插入Hbase列式數(shù)據(jù)庫(kù)中,保持Hbase原有方式,不需做其他任何更改;

步驟2、獲取原始數(shù)據(jù)并將原始數(shù)據(jù)以solr特有的文檔格式存入solr的服務(wù)端,在建立文檔之后solr會(huì)自動(dòng)對(duì)文檔進(jìn)行分析,完成分析后,solr以切分出的單詞作為key,以文檔作為value進(jìn)行倒排索引,即形成索引,定時(shí)調(diào)用MapReduce增量更新solr中建立的索引;

步驟3、查詢時(shí),訪問solr服務(wù)端,在需要查詢的字段上單獨(dú)建立索引,查詢索引,從索引中獲取rowkey,再根據(jù)rowkey去Hbase列式數(shù)據(jù)庫(kù)中查詢,即生成所需要的結(jié)果數(shù)據(jù)。

優(yōu)選的,所述solr建立索引之后,會(huì)將索引壓縮存儲(chǔ)在solr服務(wù)端的磁盤中,同時(shí)會(huì)利用Map做部分的緩存。

優(yōu)選的,所述solr索引可以對(duì)分詞器進(jìn)行優(yōu)化,針對(duì)業(yè)務(wù)場(chǎng)景對(duì)分詞進(jìn)行定制化的優(yōu)化,提取出行業(yè)特殊用詞。

優(yōu)選的,所述solr自帶分頁(yè)功能,可以每次返回一頁(yè)數(shù)據(jù)的rowkey。

優(yōu)選的,所述sorl可與成熟的內(nèi)存數(shù)據(jù)庫(kù)相結(jié)合,直接將索引存在內(nèi)存數(shù)據(jù)庫(kù)中。

優(yōu)選的,所述solr建立索引的操作也可以放在Hbase的協(xié)處理器中執(zhí)行。

本發(fā)明提出的一種基于solr的Hbase秒級(jí)查詢方案,搜索速度快,準(zhǔn)確率高,通過solr和hbase相結(jié)合的技術(shù),實(shí)現(xiàn)對(duì)海量數(shù)據(jù)的秒級(jí)檢索,solr自帶的分頁(yè)功能可以每次返回一頁(yè)數(shù)據(jù)的rowkey,由于每頁(yè)數(shù)據(jù)的數(shù)量極其有限,所以再基于該頁(yè)的rowkey去Hbase查詢時(shí)響應(yīng)速度非常快,可控制在毫秒級(jí)。

附圖說明

圖1為數(shù)據(jù)存儲(chǔ)流程圖;

圖2為數(shù)據(jù)查詢流程圖。

具體實(shí)施方式

下面結(jié)合具體實(shí)施例對(duì)本發(fā)明作進(jìn)一步解說。

參照?qǐng)D1-2,本發(fā)明提出的一種基于solr的Hbase秒級(jí)查詢方案,包括以下步驟:

步驟1、將原始數(shù)據(jù)插入Hbase列式數(shù)據(jù)庫(kù)中,保持Hbase原有方式,不需做其他任何更改;

步驟2、定時(shí)調(diào)用MapReduce增量更新solr中索引,先獲取插入Hbase列式數(shù)據(jù)庫(kù)中的原始數(shù)據(jù)并將原始數(shù)據(jù)以solr特有的文檔格式存入solr的服務(wù)器中,建立文檔之后solr會(huì)自動(dòng)對(duì)文檔進(jìn)行分析,這其中涉及對(duì)文檔中的內(nèi)容按特定的分詞技術(shù)進(jìn)行分詞,完成分詞后,solr以切分出的單詞作為key,以文檔作為value進(jìn)行倒排索引;

步驟3、查詢時(shí),訪問solr服務(wù)端,在需要查詢的字段上單獨(dú)建立索引,建立索引之后,solr會(huì)將索引壓縮存儲(chǔ)在solr服務(wù)端的磁盤中,同時(shí)會(huì)利用Map做部分的緩存,查詢索引,從索引中獲取rowkey,solr自帶分頁(yè)功能,可以每次返回一頁(yè)數(shù)據(jù)的rowkey,再根據(jù)rowkey去Hbase列式數(shù)據(jù)庫(kù)中查詢,即生成所需要的結(jié)果數(shù)據(jù)。

本發(fā)明中solr建立索引的操作也可以放在Hbase的協(xié)處理器中執(zhí)行,sorl可與成熟的內(nèi)存數(shù)據(jù)庫(kù)相結(jié)合,直接將索引存在內(nèi)存數(shù)據(jù)庫(kù)中。

本發(fā)明提出的一種基于solr的Hbase秒級(jí)查詢方案,搜索速度快,準(zhǔn)確率高,通過solr和hbase相結(jié)合的技術(shù),實(shí)現(xiàn)對(duì)海量數(shù)據(jù)的秒級(jí)檢索,solr自帶的分頁(yè)功能可以每次返回一頁(yè)數(shù)據(jù)的rowkey,由于每頁(yè)數(shù)據(jù)的數(shù)量極其有限,所以再基于該頁(yè)的rowkey去Hbase查詢時(shí)響應(yīng)速度非???,可控制在毫秒級(jí)。

以上所述,僅為本發(fā)明較佳的具體實(shí)施方式,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),根據(jù)本發(fā)明的技術(shù)方案及其發(fā)明構(gòu)思加以等同替換或改變,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。

當(dāng)前第1頁(yè)1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
苏尼特左旗| 彭山县| 大港区| 湖南省| 革吉县| 洱源县| 桃源县| 论坛| 望城县| 和静县| 朔州市| 伽师县| 湛江市| 龙里县| 永胜县| 福泉市| 高碑店市| 泽州县| 保亭| 织金县| 武胜县| 万年县| 来安县| 迭部县| 钦州市| 昆山市| 永昌县| 湘阴县| 黎平县| 甘德县| 大丰市| 伊金霍洛旗| 东城区| 克东县| 招远市| 云霄县| 二连浩特市| 棋牌| 凉山| 神池县| 获嘉县|