分類方法、查找方法和設備的制造方法
【技術領域】
[0001]本發(fā)明涉及通信領域,尤其涉及分類方法、查找方法和設備。
【背景技術】
[0002]基于Mahout機器學習平臺的分布式集群文本分類技術,將任務切割給多個從機并行執(zhí)行,由主機匯總詞頻。在Mahout平臺中文本查找使用哈希樹結構來完成新輸入單詞的詞頻查找過程,利用哈希函數對字符串生成32位(bits)的哈希編碼進行尋址。對于每個從機,采用雙重哈希線性探測的方法,來匹配特定單詞并統(tǒng)計詞頻。雙重哈希線性探查法使用兩個哈希函數在哈希表中形成一個探查序列??梢匝卮颂讲樾蛄兄饌€查找,直到找到給定的關鍵字。由于哈希樹是分布式地存放在集群各節(jié)點(即從機)中,探查序列對應的哈希地址跳躍地分布在整個分布式集群中各節(jié)點對應的哈希表中。因此在采用雙重哈希線性探查法查找存在沖突的關鍵字時,需要跨節(jié)點查找,查找速度較慢。
【發(fā)明內容】
[0003]本發(fā)明實施例提供了一種分類方法、查找方法和設備,使得在查找時能夠提高查找速度。
[0004]第一方面,提供了一種分類方法,分類方法用于分布式系統(tǒng)中,分布式系統(tǒng)包括一個主節(jié)點和X個節(jié)點,方法包括:第一節(jié)點將主節(jié)點分配的待分類數據進行哈希編碼得到多個哈希碼,第一節(jié)點為X個節(jié)點之一;第一節(jié)點將多個哈希碼根據高m位存儲到第一節(jié)點的s個第一存儲桶中,使得s個第一存儲桶中的每個第一存儲桶中的哈希碼具有相同的高m位,并且s個第一存儲桶中的不同第一存儲桶中的哈希碼具有不同的高m位;第一節(jié)點與X個節(jié)點中的第二節(jié)點交換各自的s個第一存儲桶中的哈希碼,使得X個節(jié)點中的每個節(jié)點的第二存儲桶存儲X個節(jié)點中的具有相同高m位的哈希碼,并且X個節(jié)點中的不同節(jié)點的第二存儲桶中存儲的哈希碼具有不同的高m位;第一節(jié)點將X個節(jié)點中與第一節(jié)點對應的具有相同高m位的哈希碼存儲到第一節(jié)點的第二存儲桶中。
[0005]結合第一方面,在第一種可能的實現方式中,第一節(jié)點與X個節(jié)點中的第二節(jié)點交換各自的s個第一存儲桶中的哈希碼,使得X個節(jié)點中的每個節(jié)點的第二存儲桶存儲X個節(jié)點中的具有相同高m位的哈希碼,包括:第一節(jié)點確定第二節(jié)點對應的哈希碼的高m位,將與第二節(jié)點對應的哈希碼的高m位相同的第一節(jié)點的第p個存儲桶中的哈希碼發(fā)送至第二節(jié)點,以便第二節(jié)點將第一節(jié)點的第P個存儲桶中的哈希碼與具有相同高m位的第二節(jié)點的第q個存儲桶中的哈希碼存儲在第二節(jié)點的第二存儲桶中;第一節(jié)點接收第二節(jié)點發(fā)送的第X個存儲桶中的哈希碼,其中,第一節(jié)點將X個節(jié)點中與第一節(jié)點對應的具有相同高m位的哈希碼存儲到第一節(jié)點的第二存儲桶中,包括:第一節(jié)點將第二節(jié)點發(fā)送的第X個存儲桶中的哈希碼與具有相同高m位的第一節(jié)點的第y個存儲桶中的哈希碼存儲在第一節(jié)點的第二存儲桶中,使得具有相同高m位的哈希碼唯一對應X個節(jié)點中的一個節(jié)點。
[0006]結合第一方面或第一種可能的實現方式,在第二種可能的實現方式中,該分類方法還包括:第一節(jié)點將第一節(jié)點的第二存儲桶中的哈希碼根據次高η位存儲到t個第三個存儲桶中,其中t個第三存儲桶中的每個第三存儲桶中的哈希碼具有相同的高m位和次高η位,并且t個第三存儲桶中的不同第三存儲桶中的哈希碼具有不同的高m位和次高η位。
[0007]結合第二種可能的實現方式,在第三種可能的實現方式中,該分類方法還包括:第一節(jié)點將t個第三存儲桶中的每個第三存儲桶中的哈希碼排序;第一節(jié)點獲取每個第三存儲桶中的預設哈希碼和預設哈希碼在第三存儲桶中的位置信息;第一節(jié)點根據每個第三存儲桶中的預設哈希碼和預設哈希碼在第三存儲桶中的位置信息生成查找表,以便第一節(jié)點根據查找表確定待查找的哈希碼在第三存儲桶中的位置。
[0008]結合第二種或第三種可能的實現方式中,在第四種可能的實現方式中,η和t滿足以下關系:t = 2n。
[0009]結合上述任一種可能的實現方式,在第五種可能的實現方式中,待分類數據為待分類文本中的多個單詞,在第一節(jié)點將主節(jié)點分配的待分類文本中的多個單詞根據哈希編碼得到多個哈希碼之后,分類方法還包括:第一節(jié)點確定多個哈希碼分別對應的多個P位碼,多個P位碼分別表示多個哈希碼對應的多個單詞的統(tǒng)計頻次;第一節(jié)點將多個P位碼與對應的多個哈希碼分別結合為多個第一碼,使得多個P位碼分別為多個第一碼的低P位。
[0010]結合第五種可能的實現方式,在第六種可能的實現方式中,在第一節(jié)點將X個節(jié)點中與第一節(jié)點對應的具有相同高m位的哈希碼存儲到第一節(jié)點的第二存儲桶中之后,該分類方法還包括:第一節(jié)點將第二存儲桶中具有相同哈希碼的第一碼的低P位相加。
[0011]結合第一方面的第一種至第六種可能的實現方式中的任一種可能的實現方式,在第七種可能的實現方式中,在第一節(jié)點確定第二節(jié)點對應的哈希碼的高m位之前,分類方法還包括:第一節(jié)點接收主節(jié)點發(fā)送的信息,信息指示哈希碼的高m位與X個節(jié)點的對應關系;其中,第一節(jié)點確定第二節(jié)點對應的哈希碼的高m位包括:第一節(jié)點根據對應關系,確定第二節(jié)點對應的哈希碼的高m位。
[0012]結合上述任一種可能的實現方式,在第八種可能的實現方式中,s和m滿足以下關系:s = 2'
[0013]結合上述任一種可能的實現方式,在第九種可能的實現方式中,X和m滿足以下關系:X = 2"1。
[0014]第二方面,提供了一種分類方法,分類方法用于分布式系統(tǒng)中,分布式系統(tǒng)包括一個主節(jié)點和X個節(jié)點,分類方法包括:主節(jié)點確定X個節(jié)點存儲的哈希碼的高m位與X個節(jié)點的對應關系,使得具有相同高m位的哈希碼唯一對應X個節(jié)點中的一個節(jié)點;主節(jié)點向X個節(jié)點發(fā)送信息,信息用于指示哈希碼的高m位與X個節(jié)點的對應關系。
[0015]第三方面,提供了一種查找方法,該查找方法包括:該查找方法用于分布式系統(tǒng)中,所述分布式系統(tǒng)包括一個主節(jié)點和X個節(jié)點,X個節(jié)點中的第一節(jié)點根據第一方面及第一方面的第一種至第九種可能的實現方式中的任一種可能的實現方式所述的分類方法存儲哈希碼,查找方法包括:第一節(jié)點接收主節(jié)點發(fā)送的待查找的哈希碼;第一節(jié)點根據待查找的哈希碼的高m位查找待查找的哈希碼。
[0016]結合第三方面,在第三方面的第一種可能的實現方式中,第一節(jié)點根據待查找的哈希碼的高m位查找待查找的哈希碼包括:第一節(jié)點根據待查找的哈希碼的高m位和次高η位查找待查找的哈希碼。
[0017]第四方面,提供了一種查找方法,該查找方法用于分布式系統(tǒng)中,分布式系統(tǒng)包括一個主節(jié)點和X個節(jié)點,主節(jié)點根據權利要求11的分類方法存儲哈希碼,查找方法包括:主節(jié)點對待查找數據進行哈希編碼得到待查找的哈希碼;主節(jié)點根據哈希碼的高m位與X個節(jié)點的對應關系確定待查找的哈希碼的高m位對應的第一節(jié)點,第一節(jié)點為X個節(jié)點之一;主節(jié)點將待查找的哈希碼發(fā)送至第一節(jié)點,以便第一節(jié)點查找待查找的哈希碼。
[0018]第五方面,提供了一種節(jié)點設備,節(jié)點設備用于分布式系統(tǒng)中,分布式系統(tǒng)包括一個主節(jié)點設備和X個節(jié)點設備,節(jié)點設備包括:編碼模塊,用于將主節(jié)點分配的待分類數據進行哈希編碼得到多個哈希碼;存儲模塊,用于將多個哈希碼根據高m位存儲到s個第一存儲桶中,使得s個第一存儲桶中的每個第一存儲桶中的哈希碼具有相同的高m位,并且s個第一存儲桶中的不同第一存儲桶中的哈希碼具有不同的高m位;交互模塊,用于與X個節(jié)點設備中的第二節(jié)點設備交換各自的s個第一存儲桶中的哈希碼,使得X個節(jié)點設備中的每個節(jié)點設備的第二存儲桶存儲X個節(jié)點設備中的具有相同高m位的哈希碼,并且X個節(jié)點設備中的不同節(jié)點設備的第二存儲桶存儲的哈希碼具有不同的高m位,其中,存儲模塊還用于將X個節(jié)點中與節(jié)點設備對應的具有相同高m位的哈希碼存儲到節(jié)點設備的第二存儲桶中。
[0019]結合第五方面,在第五方面的第一種可能的實現方式中,該節(jié)點設備還包括:確定模塊,用于確定第二節(jié)點設備對應的哈希碼的高m位;交互模塊包括:發(fā)送單元,用于將與第二節(jié)點設備對應的哈希碼的高m位相同的節(jié)點設備的第p個存儲桶中的哈希碼發(fā)送至第二節(jié)點設備,以便第二節(jié)點設備將節(jié)點設備的第P個存儲桶中的哈希碼與具有相同高m位的第二節(jié)點設備的第q個存儲桶中的哈希碼存儲在第二節(jié)點設備的第二存儲桶中;接收單元,用于接收第二節(jié)點設備發(fā)送的第X個存儲桶中的哈希碼,其中,存儲模塊具體用于:將第二節(jié)點設備發(fā)送的第X個存儲桶中的哈希碼與具有相同高m位的節(jié)點設備的第y個存儲桶中的哈希碼存儲在節(jié)點設備的第二存儲桶中,使得具有相同高m位的哈希碼唯一對應X個節(jié)點設備中的一個節(jié)點設備。
[0020]結合第五方面或第五方面的第一種可能的實現方式,在第五方面的第二種可能的實現方式中,存儲模塊還用于:將節(jié)點設備的第二存儲桶中的哈希碼根據次高η位存儲到t個第三個存儲桶中,其中t個第三存儲桶中的每個第三存儲桶中的哈希碼具有相同的高m位和次高η位,并且t個第三存儲桶中的不同第三存儲桶中的哈希碼具有不同的高m位和次高η位。
[0021]結合第五方面的第二種可能的實現方式,在第五方面的第三種可能的實現方式中,該節(jié)點設備還包括:查找表模塊:用于將t個第三存儲桶中的每個第三存儲桶中的哈希碼排序;獲取每個第三存儲桶中的預設哈希碼和預設哈希碼在第三存儲桶中的位置信息;根據每個第三存儲桶中的預設哈希碼和預設哈希碼在第三存儲桶中的位置信息生成查找表,以便節(jié)點設備根據查找表確定待查找的哈希碼在第三存儲桶中的位置。
[0022]結合第五方面的第二種或第三種可能的實現方式,在第五方面的第四種可能的實現方式中,η和t滿足以下關系:t = 2n。
[0023]結合第五方面或第五方面的第一種至第四種可能的實現方式中的任一種可能的實現方式,在第五方面的第五種可能的實現方式中,待分類數據為待分類文本中的多個單詞,編碼模塊還用于:在將主節(jié)點分配的待分類文本中的多個單詞進行哈希編碼得到多個哈希碼之后,確定多個哈希碼分別對應的多個P位碼,多個P位碼分別表示多個哈希碼對應的的多個單詞的統(tǒng)計頻次;將多個P位碼與多個哈希碼分別結合為多個第一碼,使得多個P位碼分別為多個第一碼的低P位。
[0024]結合第五方面的第五種可能的實現方式中的任一中可能的實現方式,在第五方面的第六種可能的實現方式中,存儲模塊還用于:在將X個節(jié)點中與節(jié)點設備對應的具有相同高m位的哈希碼存儲到節(jié)點設備的第二存儲桶中之后,將第二存儲桶中具有相同哈希碼的第一碼的低P位相加。
[0025]結合第五方面的第一種至第六種可能的實現方式中的任一種可能的實現方式,在第五方面的第七種可能的實現方式中,接收單元還用于:在確定模塊確定第二節(jié)點設備對應的哈希碼的高m位之前,接收主節(jié)點設備發(fā)送的信息,信息指示哈希碼的高m位與X個節(jié)點設備的對應關系;確定模塊具體用于:根據該對應關系,確定第二節(jié)點設備對應的哈希碼的高m位。
[0026]結合第五方面或第五方面的第一種至第七種可能的實現方式,在第五方面的第八種可能的實現方式中,s和m滿足以下關系:s = 2m。
[0027]結合第五方面或第五方面的第一種至第八種可能的實現方式中,在第九種可能的實現方式中,X和m ?兩足以下關系:Χ = 2m。
[0028]第六方面,提供了一種主節(jié)點設備,主節(jié)點設備用于分布式系統(tǒng)中,分布式系統(tǒng)包括一個主節(jié)點和X個節(jié)點設備,主節(jié)點設備包括:確定模塊,用于確定X個節(jié)點設備存儲的哈希碼的高m位與X個節(jié)點設備的對應關系,使得具有相同高m位的哈希碼唯一對應X