亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

分類方法、查找方法和設(shè)備的制造方法_3

文檔序號:9547220閱讀:來源:國知局
通過將邏輯相連,空間分開的哈希碼和哈希碼對應的值合并成一個碼,減少了查找到key后還需要指針索引到value所得到益處,會遠大于對極少數(shù)單詞溢出進行特殊處理所浪費的額外開銷。
[0078]可選地,作為另一實施例,分類方法100還包括:第一節(jié)點將第一節(jié)點的第二存儲桶中的哈希碼根據(jù)次高η位存儲到t個第三個存儲桶中,其中該t個第三存儲桶中的每個第三存儲桶中的哈希碼具有相同的的高m位和次高η位,并且t個第三存儲桶中的不同第三存儲桶中的哈希碼具有不同的高m位和次高η位。
[0079]在本發(fā)明實施例中,η和t可以滿足t = 2η。此時,次高η位表示的二進制組合可與所在的第三存儲桶一一對應。但本發(fā)明實施例不限于此,X也可以小于2m。
[0080]將第二存儲桶中的哈希碼根據(jù)次高η位分別存儲到t個第三個存儲桶中之后,在根據(jù)哈希碼的高m位確定待查找的哈希碼所對應的節(jié)點和所在的第二存儲桶的基礎(chǔ)上,根據(jù)哈希碼的次高η為能夠更加精確地確定待查找的哈希碼所在的位置,例如哈希碼所在的內(nèi)存段。
[0081]例如,將根據(jù)本發(fā)明實施例的分類方法100應用于分布式集群文本分類中。匹配特定單詞時,根據(jù)該單詞的碼的高m位就可以確定該單詞的碼所在的節(jié)點,進一步地根據(jù)該單詞的碼的次高η位就可以確定該單詞的碼位于該節(jié)點的哪段內(nèi)存中,能夠進一步提高查找速度。例如,當節(jié)點將存儲桶的入口(即存儲桶的初始地址)保存在高速緩沖存儲器(Cache)上時,N位碼的高m位可以映射節(jié)點層,次高η位可以映射節(jié)點的cache層。另外,節(jié)點可以將桶內(nèi)全部碼都保存在cache上,節(jié)點還可以將桶內(nèi)的全部碼都保存在內(nèi)存中。
[0082]可選地,作為另一實施例,分類方法100還可以包括:第一節(jié)點將t個第三存儲桶中的每個第三存儲桶中的哈希碼排序;第一節(jié)點獲取每個第三存儲桶中的預設(shè)哈希碼和該預設(shè)哈希碼在第三存儲桶中的位置信息;第一節(jié)點根據(jù)每個第三存儲桶中的預設(shè)哈希碼和該預設(shè)哈希碼在第三存儲桶中的位置信息生成查找表,以便第一節(jié)點根據(jù)查找表確定待查找的哈希碼在第三存儲桶中的位置。
[0083]例如,每個存儲桶對應的查找表中可以存儲預設(shè)的哈希碼及其位置信息(如首尾哈希碼、五分點哈希碼、或八分點哈希碼等)。對于數(shù)據(jù)量特別大的情況,存儲桶會比較深,此時能夠根據(jù)查找表來確定待查找的N位碼位于桶內(nèi)的哪個地址段,無需在存儲桶內(nèi)逐次匹配,從而加速存儲桶內(nèi)的匹配過程。
[0084]應理解,本發(fā)明的實施例的層次化的分類方法不限于將哈希碼分為兩層,例如將哈希碼依次根據(jù)高m位和次高η位進行分類。本發(fā)明的實施例的層次化的分類方法還可以根據(jù)實際需求將哈希碼分為兩層以上的層次(如三層或五層),并將哈希碼依次根據(jù)劃分的層次進行分類,具體過程與本發(fā)明實施例上文描述類似,為簡潔,在此不再贅述。
[0085]根據(jù)本發(fā)明實施例的分類方法,通過將哈希碼根據(jù)高m位映射到與節(jié)點具有對應關(guān)系的存儲桶中,能夠根據(jù)哈希碼的高m位確定該碼所對應的節(jié)點,使得在查找時能夠避免跨節(jié)點查找,從而能夠提高查找速度。
[0086]根據(jù)本發(fā)明另一實施例提供了一種分類方法300。分類方法300用于分布式系統(tǒng)中,該分布式系統(tǒng)包括X個節(jié)點。分類方法300包括如下內(nèi)容。
[0087]310,確定X個節(jié)點存儲的哈希碼的高m位與X個節(jié)點的對應關(guān)系,使得具有相同高m位的哈希碼唯一對應X個節(jié)點中的一個節(jié)點。
[0088]320,向X個節(jié)點發(fā)送信息,該信息用于指示哈希碼的高m位與X個節(jié)點的對應關(guān)系。
[0089]根據(jù)本發(fā)明實施例的分類方法,通過確定哈希碼的高m位與節(jié)點的對應關(guān)系,并向節(jié)點發(fā)送指示該對應關(guān)系的信息,能夠使得節(jié)點根據(jù)該對應關(guān)系存儲哈希碼,以便在查找時避免跨節(jié)點查找,從而能夠提高查找速度。
[0090]圖4示出了根據(jù)本發(fā)明實施例的查找方法400的示意性流程圖。查找方法400用于分布式系統(tǒng)中,該分布式系統(tǒng)包括一個主節(jié)點和X個節(jié)點,X個節(jié)點中的第一節(jié)點根據(jù)圖1所示實施例的分類方法100存儲哈希碼。如圖4所示,查找方法400包括如下內(nèi)容。
[0091 ] 410,第一節(jié)點接收主節(jié)點發(fā)送的待查找的哈希碼。
[0092]420,第一節(jié)點根據(jù)待查找的哈希碼的高m位查找待查找的哈希碼。
[0093]例如,第一節(jié)點對應的哈希碼可以包括兩種高m位,分別存儲在兩個存儲桶中,第一節(jié)點根據(jù)待查找的哈希碼的高m位能夠確定該待查找的哈希碼所在的存儲桶。
[0094]根據(jù)本發(fā)明實施例的查找方法,節(jié)點能夠根據(jù)待查找的哈希碼的高m位查找待查找的哈希碼,并且無需與其他節(jié)點通信,從而能夠提高查找速度。
[0095]可選地,作為另一實施例,在420中,第一節(jié)點可以根據(jù)待查找的哈希碼的高m位和次高η位查找待查找的哈希碼。
[0096]當存儲桶較深時,第一節(jié)點可以根據(jù)哈希碼的次高η位確定待查找的哈希碼在桶中的哪段存儲空間,進一步縮小了查找范圍,從而能夠進一步提高查找速度。
[0097]圖5示出了根據(jù)本發(fā)明實施例的查找方法500的示意性流程圖。查找方法500用于分布式系統(tǒng)中,該分布式系統(tǒng)包括一個主節(jié)點和X個節(jié)點,主節(jié)點根據(jù)圖3所示實施例的分類方法300存儲哈希碼。如圖5所示,查找方法500包括如下內(nèi)容。
[0098]510,主節(jié)點對待查找數(shù)據(jù)進行哈希編碼得到待查找的哈希碼。
[0099]520,主節(jié)點根據(jù)哈希碼的高m位與X個節(jié)點的對應關(guān)系確定待查找的哈希碼的高m位對應的第一節(jié)點,第一節(jié)點為X個節(jié)點之一。
[0100]530,主節(jié)點將待查找的哈希碼發(fā)送至第一節(jié)點,以便第一節(jié)點查找待查找的哈希碼。
[0101]根據(jù)本發(fā)明實施例的查找方法,主節(jié)點能夠根據(jù)待查找的哈希碼的高m位確定唯一對應的節(jié)點,無需節(jié)點間通信,從而能夠提高查找速度。
[0102]下面結(jié)合圖6和圖7詳細描述根據(jù)本發(fā)明實施例的分類方法600,分類方法600是分類方法100的具體例子,為便于描述,本發(fā)明實施例以分布式集群對海量文本中的單詞進行分類的應用場景為例進行描述。該分布式集群包括32個節(jié)點。應理解,下面的例子僅是為了幫助本領(lǐng)域技術(shù)人員更好地理解本發(fā)明實施例,而非限制本發(fā)明實施例的范圍。
[0103]601、主節(jié)點將待分類文本分配至32個節(jié)點,各節(jié)點采用BKDRHash函數(shù)(31位),將任意文本中的字符串轉(zhuǎn)化成31位原始哈希碼(編碼沖撞率極低),并截取高22位,作為如下編碼的哈希編碼(Hash_Code)段。
[0104]602、各節(jié)點將邏輯對應的哈希碼和值(即該哈希碼對應的單詞出現(xiàn)的頻次)合并成一個32位(bit)的數(shù)。如下表所示,高22位為哈希碼,低10位為對應的頻次。哈希碼部分包括高5位和次高5位。存儲桶對應的位寬與集群中的節(jié)點數(shù)N#滿足N#= 2*?,例如N節(jié)點=32。
[0105]603、如圖6所示,各節(jié)點根據(jù)哈希碼的高5位映射到相應的存儲桶中,該相應的存儲桶可以存儲在cache中,還可以存儲在內(nèi)存中,也可以一部分存儲在cache (如桶的入口地址)另一部分存儲在內(nèi)存中。以節(jié)點1為例:節(jié)點1將得到的亂序碼通過映射函數(shù),按哈希碼的高5位地址映射到節(jié)點1的內(nèi)存中的32個存儲桶中,其中地址映射是指節(jié)點1的碼中高5位相同的碼會被分別存儲到對應的存儲桶中,如節(jié)點1中的OOOOOXX…X碼被存儲在節(jié)點1中的第一個存儲桶,00001XX…X碼被存儲在節(jié)點1中的第二個存儲桶,在一個存儲桶中的碼根據(jù)先來后到的原則存放。在節(jié)點1的內(nèi)存中有地址高五位為00000-11111的32個桶,每個存儲桶內(nèi)存儲的碼的高5位都是相同的,但在桶存儲內(nèi)的碼還是亂序的。其他節(jié)點與節(jié)點1的操作類似,在此不在贅述。進一步可以得到全局有序,局部無序的分布式哈希樹。
[0106]604、如圖7所示,確定每個節(jié)點對應的碼的高5位,每個節(jié)點將各自的32個存儲桶中具有相同的高5位的碼交換至對應的節(jié)點。以各節(jié)點的存儲桶1為例說明,節(jié)點1對應高5位為00000的碼,各節(jié)點將其存儲桶1的碼都發(fā)往節(jié)點1中,則節(jié)點1存放的都是整顆哈希樹中高5位為00000的全部碼,在存放的過程中將相同的碼合并,最終生成右邊節(jié)點1對應的碼。各節(jié)點的其他存儲桶的操作與存儲桶1的操作類似,在此不再贅述。此時每個節(jié)點對應的碼的高5位相同,但是各個節(jié)點內(nèi)的碼仍然是無序的。
[0107]具體地,合并頻次的原則是:判斷同一存儲桶內(nèi)兩個碼是否相同,若相同,頻次段相加,如下圖所示。不同則依次放入桶中;對于相同的碼,相加完頻次后,寫回首個出現(xiàn)的地址,清空后出現(xiàn)重復的碼;當頻次段溢出時,向處理器回報一個ERROR,刪除原先相同的碼(η個),依次在桶中空的內(nèi)存段存放(η+1)個碼。
[0108]605、如圖8所示,按次高5位地址映射的方式重新映射(re_map)步驟304得到的中間結(jié)果,重新映射到各自節(jié)點。以節(jié)點1為例,節(jié)點1內(nèi)對應的碼的高位都是00000,節(jié)點1內(nèi)的碼經(jīng)過次高5位映射到32個桶內(nèi),如圖8所示,最終節(jié)點1內(nèi)的碼,高5位為00000,次高5位與其所在桶的位置——對應,例如桶1內(nèi)依次映射:0000000000ΧΧ…X、
0000000001XX…X、......0000011111XX…X。其他節(jié)點的操作與節(jié)點1類似,在此不再贅述。
通過以上的過程,高5位可以指示碼所在節(jié)點號,次高5位可以指示碼所在內(nèi)存段號(即所在桶的地址)。
[0109]606、根據(jù)輸入的需要匹配的單詞的哈希碼,快速得到其詞頻。具體包括:主節(jié)點根據(jù)該待查找的單詞的哈希碼的高5位判斷對應的節(jié)點;主節(jié)點將該待查找的哈希碼發(fā)送至對應的該節(jié)點,該節(jié)點根據(jù)該待查找的哈希碼的次高5位,找到桶的入口,進而逐次匹配到詞頻,就能夠?qū)崿F(xiàn)較為精準的層次化的查找匹配。
[0110]根據(jù)本發(fā)明實施例的分類方法,通過將哈希碼根據(jù)高m位映射到與節(jié)點具有對應關(guān)系的存儲桶中,能夠根據(jù)哈希碼的高m位確定該碼所對應的節(jié)點,使得在查找時能夠避免跨節(jié)點查找,從而能夠提高查找速度。
[0111]上文結(jié)合圖1至圖8描述了根據(jù)本發(fā)明實施例的分類方法和查找方法,下面結(jié)合圖9至圖12詳細描述根據(jù)本發(fā)明實施例的節(jié)點設(shè)備和主節(jié)點設(shè)備。
[0112]圖9a示出了根據(jù)本發(fā)明實施例的節(jié)點設(shè)備900的示意性框圖。節(jié)點設(shè)備900用于分布式系統(tǒng)中,該分布式系統(tǒng)包括一個主節(jié)點和X個節(jié)點。如圖9a所示,節(jié)點設(shè)備900包括:編碼模塊910、存儲模塊920和交互模塊930。
[0113]編碼模塊910,用于將主節(jié)點分配的待分類數(shù)據(jù)進行哈希編碼得到多個哈希碼。
[0114]存儲模塊920,用于將編碼模塊910得到的該多個哈希碼根據(jù)高m位存儲到s個第一存儲桶中,使得s個第一存儲桶中的每個第一存儲桶中的哈希碼具有相同的高m位,并且S個第一存儲桶中的不同第一存儲桶中的哈希碼具有不同的高m位。
[0115]交互模塊930,用于與X個節(jié)點設(shè)備中的第二節(jié)點設(shè)備交換各自的s個第一存儲桶中的哈希碼,使得X個節(jié)點設(shè)備中的每個節(jié)點設(shè)備的第二存儲桶存儲X個節(jié)點設(shè)備中的具有相同高m位的哈希碼,并且X個節(jié)點設(shè)備中的不同節(jié)點設(shè)備的第二存儲桶存儲的哈希碼具有不同的高m位。
[0116]存儲模塊920還用于將X個節(jié)點中與該節(jié)點設(shè)備對應的具有相同高m位的哈希碼存儲到該節(jié)點設(shè)備的第二存儲桶中。
[0117]根據(jù)本發(fā)明實施例的節(jié)點設(shè)備,通過
當前第3頁1 2 3 4 5 6 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1