專利名稱:一種多維度數據去重方法及系統的制作方法
技術領域:
本申請涉及網絡數據處理領域,特別涉及一種多維度數據去重方法及系統。
背景技術:
網絡日志文件可以是一種采用多維度數據記錄用戶訪問網絡事件的文件,其中,多維度數據由描述用戶訪問網絡事件的各個屬性構成。例如,某大型網站的多維度數據格式可以為{用戶id,省,市,域名,瀏覽器類型},該多維度數據的屬性分別為用戶id、省、市、域名和瀏覽器類型,其維度等于5。其中,一維度數據可以為{用戶id},二維度數據可以為{用戶id,省},三維度數據可以為{用戶id,省,市},四維度數據可以為{用戶id,省,市,域名},五維度數據可以為{用戶id,省,市,域名,瀏覽器類型}。然而,對于同一用戶不同時間段的用戶訪問網絡事件來說,網絡日志文件中的多維度數據可能相同,因此,系統在分析網絡日志文件記錄的同一用戶的多個多維度數據時,首先將網絡日志文件中相同的多維度數據去重,以避免對相同的多維度數據重復分析。其中多維度數據去重是指刪除網絡日志文件中相同的多維度數據的重復記錄,在網絡日志文件中只保留相同的多個多維度數據的其中一個。相同的多維度數據是指由相同屬性構成,且屬性值也相同的多維度數據。目前現有技術中多維度數據去重方法可以包括如下步驟首先,選取網絡日志文件中維度相同的各個多維度數據進行劃分。該劃分的依據具體為對所選取的各個多維度數據進行Hash計算,得出所選取的各個多維度數據的關鍵字,將具有完全相同關鍵字的各個多維度數據劃分至同一個子日志文件。
其次,對于子日志文件中的任一個多維度數據,判斷是否存在與其屬性及屬性值都相同的多維度數據,如果是,刪除與該任一個多維度數據相同的其他多維度數據。最后,判斷所述網絡日志文件中是否存在還未進行劃分的其他維度的多維度數據,如果是,對還未進行劃分的其他維度的多維度數據進行去重處理,如果否,結束多維度數據去重過程。但是,上述去重過程中,需要依次對不同維度的各個多維度數據去重,即按照維度值分多次對多維度數據進行去重,因此,在對具有多個維度的多維度數據的網絡日志文件劃分時,每個劃分過程都需要掃描網絡日志文件中的所有維度的多維度數據,這增加了多維度數據的去重時間,降低了去重效率。更進一步地,如果后續還需要對該網絡日志文件中的多維度數據進行分析,也會因為去重效率低而延遲分析過程。
發明內容
本申請所要解決的技術問題是提供一種多維度數據去重方法,用以解決現有技術依次對不同維度的多維度數據去重時,每個劃分過程都需要掃描網絡日志文件中的所有維度的多維度數據,從而增加了多維度數據的去重時間,降低了去重效率的問題。本申請還提供了一種多維度數據去重系統,用以保證上述方法在實際中的實現及應用。為了解決上述問題,本申請提供了一種多維度數據去重方法,包括依據網絡日志文件中任一維度值的多維度數據的屬性值確定劃分值,其中,所述任一維度值小于所述網絡日志文件中各個維度的多維度數據的最大維度;將所述網絡日志文件中包含相同的所述劃分值的不同多維度數據劃分至一個子日志文件;對于所述子日志文件中的任一個多維度數據,判斷是否存在與其屬性及屬性值都相同的多維度數據,如果是,則刪除與所述任一個多維度數據相同的多維度數據。優選地,所述依據網絡日志文件中任一維度值的多維度數據的屬性值確定劃分值包括將網絡日志文件中維度為I的一維度數據的屬性值確定為劃分值。優選地,在所述任一維度值不為I,且維度小于任一維度值的多維度數據不包括所述劃分值的情況下,所述方法還包括選取所述網絡日志文件中維度相同,且小于所述任一維度值的各個多維度數據;運用Hash算法對所選取的各個多維度數據進行計算,得出所選取的各個多維度數據的關鍵字;將具有完全相同的關鍵字的各個多維度數據劃分至一個子日志文件。優選地,所述將所述網絡日志文件中包含有相同的所述劃分值的多維度數據劃分至一個子日志文件包括
`
運用Hash算法對各個多維度數據包含的所述劃分值進行計算,得出關鍵字;將具有完全相同關鍵字的各個多維度數據劃分至一個子日志文件。優選地,所述將所述網絡日志文件中包含相同的所述劃分值的不同多維度數據劃分至一個子日志文件包括依據所述網絡日志文件的大小,將所述網絡日志文件拆分為多個初始子文件;將所述多個初始子文件中包含相同劃分值的多維度數據劃分至一個目標子文件中,并將所述目標子文件作為子日志文件,其中所述目標子文件為所述多個初始子文件中的一個。優選地,所述將所述多個初始子文件中包含相同劃分值的多維度數據劃分至一個目標子文件中,并將所述目標子文件作為子日志文件包括運用Hash算法對各個多維度數據包含的所述劃分值進行計算,得出關鍵字;將具有完全相同的關鍵字的各個多維度數據劃分至一個目標子文件,并將所述目標子文件作為子日志文件。本申請還提供了一種多維度數據去重系統,該系統包括劃分值確定模塊,用于依據網絡日志文件中任一維度值的多維度數據的屬性值確定劃分值,其中,所述任一維度值小于所述網絡日志文件中各個維度的多維度數據的最大維度;劃分模塊,用于將所述網絡日志文件中包含相同的所述劃分值的不同多維度數據劃分至一個子日志文件;判斷模塊,用于對于所述子日志文件中的任一個多維度數據,判斷是否存在與其屬性及屬性值都相同的多維度數據;
刪除模塊,用于在所述判斷模塊的結果為是的情況下,刪除與所述任一個多維度數據相同的多維度數據。優選地,所述劃分值確定模塊,具體用于將所述網絡日志文件中維度為I的一維度數據的屬性值確定為劃分值。優選地,在所述任一維度值不為I,且維度小于任一維度值的多維度數據不包括所述劃分值的情況下,所述系統還包括數據選取模塊,用于選取所述網絡日志文件中維度相同,且小于所述任一維度值的各個多維度數據;所述劃分模塊,還用于運用Hash算法對所選取的各個多維度數據進行計算,得出所選取的各個多維度數據的關鍵字,將具有完全相同關鍵字的各個多維度數據劃分至一個子日志文件。優選地,所述劃分模塊包括關鍵字計算單元,用于運用Hash算法對各個多維度數據包含的所述劃分值進行計算,得出關鍵字;第一劃分單元,用于將具有完全相同關鍵字的各個多維度數據劃分至一個子日志文件。與現有技術相比,本申請包括以下優點應用本申請實施例提供的多維度數據去重方法,依據任一維度值小于最大維度的多維度數據的屬性值確定劃分值,因此在對多個維度的多維度數據劃分時,可以一次對多維度數據進行劃分,從而減少了劃分次數,減少對網絡日志文件中所有維度的多維度數據的掃描時間,進一步在去重的整體過程中,減少了多維度數據的去重時間,提高了去重效率。優選地,在本申請實施例中,依據維度為I的一維度數據的屬性值確定劃分值,因此本申請可以一次劃分即可完成劃分所有多維度數據,從而減少對網絡日志文件中所有維度的多維度數據的掃描時間,進一步在去重的整體過程中,減少了多維度數據的去重時間,提聞了去重效率。更進一步地,如果后續服務器還需要對該網絡日志文件中的多維度數據進行分析,也會因為去重效率提高而加快分析過程。當然,實施本申請的任一產品并不一定需要同時達到以上所述的所有優點。
為了更清楚地說明本申請實施例中的技術方案,下面將對實施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本申請的一些實施例,對于本領域普通技術人員來講,在不付出創造性勞動性的前提下,還可以根據這些附圖獲得其他的附圖。 圖1是本申請的一種多維度數據去重方法實施例1的一種流程圖;圖2為實施例1步驟102的流程圖;圖3是本申請的一種多維度數據去重方法實施例1的另一種流程圖;圖4是本申請的一種多維度數據去重方法實施例2的流程圖5是本申請的一種多維度數據去重系統優選實施例1的一種結構框圖;圖6是本申請的劃分模塊的結構框圖;圖7是本申請的一種多維度數據去重系統優選實施例1的另一種結構框圖;圖8是本申請的一種多維度數據去重系統優選實施例2的結構框圖;圖9是本申請的第二劃分單元的結構框圖。
具體實施例方式下面將結合本申請實施例中的附圖,對本申請實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本申請一部分實施例,而不是全部的實施例。基于本申請中的實施例,本領域普通技術人員在沒有做出創造性勞動前提下所獲得的所有其他實施例,都屬于本申請保護的范圍。本申請可用于眾多通用或專用的計算系統環境或配置中。例如個人計算機、服務器計算機、手持設備或便攜式設備、平板型設備、多處理器系統、包括以上任何系統或設備的分布式計算環境等等。本申請可以在由計算機執行的計算機可執行指令的一般上下文中描述,例如程序模塊。一般地,程序模塊包括執行特定任務或實現特定抽象數據類型的例程、程序、對象、組件、數據結構等等。也可以在分布式計算環境中實踐本申請,在這些分布式計算環境中,由通過通信網絡而被連接的遠程處理設備來執行任務。在分布式計算環境中,程序模塊可以位于包括存儲設備在內的本地和遠程計算機存儲介質中。本申請的主要思想之一可以包括,首先,依據網絡日志文件中任一維度值的多維度數據的屬性值確定劃分 值,其中,所述任一維度值小于所述網絡日志文件中各個維度的多維度數據的最大維度,其次,將網絡日志文件中包含相同劃分值的不同多維度數據劃分至同一個子日志文件,然后,在判斷子日志文件中的任一個多維度數據存在與其屬性及屬性值都相同的多維度數據時,刪除與任一個多維度數據相同的多維度數據。因為本申請依據任一維度值小于最大維度的多維度數據的屬性值確定劃分值,所以本申請在對多個維度的多維度數據劃分時,可以一次對多個維度的多維度數據進行劃分,從而減少了劃分次數,減少對網絡日志文件中所有維度的多維度數據的掃描時間,進一步在去重的整體過程中,減少了多維度數據的去重時間,提高了去重效率。參考圖1,其示出了本申請一種多維度數據去重方法實施例1的一種流程圖,可以包括以下步驟步驟101 :依據網絡日志文件中任一維度值的多維度數據的屬性值確定劃分值,其中,任一維度值小于網絡日志文件中各個維度的多維度數據的最大維度值。當任一維度值為I或其他數值時,依據網絡日志文件中任一維度值的多維度數據的屬性值確定的劃分值對應不同的數值。當任一維度值為I時,其確定的劃分值可以與其屬性值相同,也可以為屬性值的范圍值;當任一維度值不為I時,該任一維度值對應的多維度數據確定的劃分值可以為多個屬性值的組合,也可以為多個屬性值中的一個屬性值,還可以為多個屬性值中一個屬性值的范圍值。下面對劃分值和屬性值的對應關系進行舉例說明。例如某一個網絡日志文件記錄有多個多維度數據,其中一個多維度數據的一維數據可以為{Mike},二維度數據可以為{Mike,浙江},三維度數據可以為{Mike,浙江,杭州},四維度數據可以為{Mike,浙江,杭州,www. taobao. com},五維度數據可以為{Mike,浙江,杭州,www. taobao. com, ie8}。當任一維度值為I時,依據一維數據確定的劃分值可以為Mike,也可以為Mike的范圍值,如英文首字母L至N。當任一維度值為2時,二維度數據確定的劃分值可以為Mike和浙江,也可以為Mike或浙江。步驟102 :將網絡日志文件中包含相同的劃分值的不同多維度數據劃分至一個子日志文件。不同維度值對應的劃分值的數值不同,且對網絡日志文件中不同多維度數據的劃分過程也不同。同樣以步驟101列舉的網絡日志文件進行說明。當任一維度值為I時,其劃分值可以為Mike,則網絡日志文件中包含Mike的不同多維度數據劃分至一個子日志文件中。當任一維度值為I時,劃分值還可以為英文首字母L至N,則網絡日志文件中第一個屬性值包含英文字母L或M或N的不同多維度數據劃分至一個子日志文件中。當任一維度值不為I時,劃分值可以為Mike,則網絡日志文件中包含“Mike”的不同多維度數據劃分至一個子日志文件中。當任一維度值不為I時,劃分值還可以為“浙江”時,則網絡日志文件中第二屬性值包含“浙江”的不同多維度數據被劃分至一個子日志文件中,而一維度數據不包括第二屬性值“浙江”,因此一維度數據被劃分至其他子日志文件中。當任一維度值不為I時,劃分值還可以為“Mike”和“浙江”時,則網絡日志文件中第一屬性值和第二屬性值分別為“Mike”和“浙江”的不同多維度數據劃分至一個子日志文件中,而一維度數據被劃分至其他子日志文件中。當任一維度值不為I時,劃分值還可以為英文首字母L至N,則網絡日志文件中第一個屬性值包含英文字母L或M或N的不同多維度數據劃分至一個子日志文件中。 上述劃分為依據劃分值對網絡日志文件中的不同多維度數據進行劃分。當然,劃分過程還可以采用其他方式,如圖2所示。圖2為實施例1步驟102的流程圖。該流程包括步驟步驟1021 :運用Hash算法對各個多維度數據包含的所述劃分值進行計算,得出關鍵字。其中,Hash算法是一種壓縮映射算法,即將任意長度的輸入值轉換成固定長度的輸出值,該輸出值可以作為關鍵字。Hash算法具有一個基本特性兩個關鍵字不同,其對應的輸入值也不同;兩個關鍵字相同,其對應的輸入值可以相同,也可以不同。步驟1022 :將具有完全相同關鍵字的各個多維度數據劃分至一個子日志文件。如上所述,多維度數據由描述用戶訪問事件的各個屬性構成,即每個多維度數據對應一個用戶id,因此,在運用Hash算法對各個多維度數據包含的劃分值進行計算時,選取特定的轉換方法,將網絡日志文件中同一用戶id對應的不同多維度數據劃分至同一個子日志文件,且不同子日志文件中的多維度數據相對平均。其中,特定的轉換方法是指可以保證將網絡日志文件中同一用戶id對應的不同多維度數據劃分至同一個子日志文件,且不同子日志文件中的多維度數據相對平均的轉換方法。下面列舉實例進行說明。例如網絡日志文件中的不同維度的多維度數據分別對應用戶id為Mike、Nike、Lining、Xiaoffang和Lucy,服務器選取特定的轉換方法,將上述用戶Mike、Nike和Lining對應的不同多維度數據劃分至子日志文件A中,將上述用戶XiaoWang和Lucy對應的不同多維度數據劃分至子日志文件B中。從統計學上來說,當不同子日志文件中不同多維度數據對應的用戶id個數相當時,子日志文件中的多維度數據相對平均,S卩服務器通過特定的轉換方法可以保證不同子日志文件中的多維度數據相對平均。其中,用戶個數相當是指用戶個數相同或者相差預設數值的用戶個數,預設數值可以為I。需要說明的是在將網絡日志文件中包含相同劃分值的不同多維度數據劃分至同一個子日志文件中,服務器將不同多維度數據按照維度值進行劃分,并且對任一維度值的多維度數據進行排序。以上一步驟列舉的網絡日志文件為例,服務器可以按照第一屬性值中英文字母的排序,對同一維度的多維度數據進行排序。步驟103 :對于所述子日志文件中的任一個多維度數據,判斷是否存在與其屬性及屬性值都相同的多維度數據,如果是,執行步驟104 ;如果否,執行步驟105。步驟104 :刪除與任一個多維度數據相同的多維度數據。步驟105 :保留該任一個多維度數據。實際應用場景下,上述步驟103至步驟105的實際執行過程可以為首先選取第一個多維度數據,其中第一個多維度數據包括一維度數據至最大維度的多維度數據。由于該多維度數據是第一個多維度數據,所以保留該第一個多維度數據中的不同多維度數據至相對應的集合中;其次,循環選取其他多維度數據,判斷選取的多維度數據與上一次保留至集合中的相同維度的多維度數據是否相同,如果是,則執行步驟104,如果否,則執行步驟105。需要說明的是在任一維度值不為1,且維度小于任一維度值的多維度數據不包括所述劃分值的情況下,不包括劃分值的多維度數據的劃分過程與步驟102不同,具體請參閱圖3。圖3為本申請一種多維度數據去重方法實施例1的另一種流程圖,可以包括如下步驟步驟301 :依據網絡日志文件中任一維度值的多維度數據的屬性值確定劃分值,其中,任一維度值小于網絡日志文件中各個維度的多維度數據的最大維度。步驟302 :將網絡日志文件中包含相同的劃分值的不同多維度數據劃分至一個子日志文件,執行步驟306。步驟303 :選取網絡日志文件中維度相同,且小于任一維度值的各個多維度數據。步驟304 :運用Hash算法對所選取的各個多維度數據進行計算,得出所選取的各個多維度數據的關鍵字。步驟305 :將具有完全相同關鍵字的各個多維度數據劃分至一個子日志文件,執行步驟306。
在本實施例中,圖3所示的多維度數據去重方法與圖1所示的多維度數據去重方法的不同之處在于在任一維度值不為1,且維度小于任一維度值的多維度數據不包括所述劃分值的情況下,不包括劃分值的多維度數據采用步驟303至步驟305提供的方式進行劃分。而其他包括劃分值的多維度數據則使用步驟302提供的方式進行劃分。步驟306 :對于所述子日志文件中的任一個多維度數據,判斷是否存在與其屬性及屬性值都相同的多維度數據,如果是,執行步驟307 ;如果否,執行步驟308。步驟307 :刪除與任一個多維度數據相同的多維度數據。
步驟308 :保留該任一個多維度數據。應用本申請實施例提供的多維度數據去重方法,依據任一維度值小于最大維度的多維度數據的屬性值確定劃分值,因此在對多個維度的多維度數據劃分時,可以一次對多個維度的多維度數據進行劃分,從而減少了劃分次數,減少對網絡日志文件中所有維度的多維度數據的掃描時間,進一步在去重的整體過程中,減少了多維度數據的去重時間,提高了去重效率。優選地,在本申請實施例中,依據維度為I的一維度數據的屬性值確定劃分值,因此本申請可以一次劃分即可完成劃分所有多維度數據,從而減少對網絡日志文件中所有維度的多維度數據的掃描時間,進一步在去重的整體過程中,減少了多維度數據的去重時間,提聞了去重效率。更進一步地,如果后續服務器還需要對該網絡日志文件中的多維度數據進行分析,也會因為去重效率提高而加快分析過程。參考圖4,示出了本申請一種多維度數據去重方法實施例2的流程圖,本實施例可以理解為將本申請的多維度數據去重方法應用于實際中的一個具體例子,可以包括以下步驟步驟401 :依據網絡日志文件中任一維度值的多維度數據的屬性值確定劃分值,其中,任一維度值小于網絡日志文件中各個維度的多維度數據的最大維度。步驟402 :將網絡日志文件中包含相同的劃分值的不同多維度數據劃分至一個子日志文件。在實際應用場 景中,步驟402可以采用如下步驟
步驟4021 :依據所述網絡日志文件的大小,將所述網絡日志文件拆分為多個初始子文件。之所以依據網絡日志文件大小,將網絡日志文件拆分為多個初始子文件,是為了由不同的進程處理不同的子文件,即由不同的服務器處理不同的子文件,從而可以避免使用一個服務器處理網絡日志文件時,導致服務器性能降低,甚至癱瘓。初始子文件個數的確定方式可以為,首先確定初始子文件的大小,其次依據網絡日志文件的大小與確定的初始子文件大小的比值,確定初始子文件個數。初始子文件個數的確定方式還可以為由操作人員預先確定。當操作人員預先確定初始文件個數時,每個初始子文件的大小網絡日志文件的大小與初始子文件個數的比值。需要說明的是當網絡日志文件的大小與初始子文件個數的比值不為整數時,可以將余數劃分至任一個初始子文件中。步驟4022 :將多個初始子文件中包含相同劃分值的多維度數據劃分至一個目標子文件中,并將目標子文件作為子日志文件,其中目標子文件為多個初始子文件中的一個。如前所述,首先,運用Hash算法對各個多維度數據包含的劃分值進行計算,得出關鍵字;其次,將具有完全相同關鍵字的各個多維度數據劃分至一個子日志文件的方式可以將網絡日志文件中同一用戶對應的不同多維度數據劃分至同一個子日志文件,且不同子日志文件中的多維度數據相對平均。因此,在本實施例中優選采用上述依據關鍵字劃分的方式。步驟403 :對于所述子日志文件中的任一個多維度數據,判斷是否存在與其屬性及屬性值都相同的多維度數據,如果是,執行步驟404;如果否,執行步驟405。步驟404 :刪除與任一個多維度數據相同的多維度數據。步驟405 :保留該任一個多維度數據。需要說明的是本實施例優選將維度為I的一維度數據的屬性值確定為劃分值。當本實施例存在任一維度值不為1,且維度小于任一維度值的多維度數據不包括所述劃分值的情況下,不包括劃分值的多維度數據采用圖3中的步驟303至步驟305提供的方式進行劃分。在完成劃分后,執行步驟403。下面以將網絡日志文件拆分為兩個初始子文件,將維度為I的一維度數據的屬性值作為劃分值,且在劃分過程中依據關鍵字對不同多維度數據進行劃分為例對本實施例提供的多維度數據去重方法進行說明。網絡日志文件被拆分成的初始子文件I包括一維度數據{Mike},二維度數據{Mike,浙江},三維度數據{Mike,浙江,杭州},四維度數據{Mike,浙江,杭州,www. taobao. com},五維度數據{Mike,浙江,杭州,www.taobao. com, ie8}; 一維度數據{Mike},二維度數據{Mike,浙江},三維度數據{Mike,浙江,杭州},四維度數據{Mike,浙江,杭州,s. taobao. com},五維度數據{Mike,浙江,杭州,s. taobao.com, ie8}; —維度數據{Lucy}, 二維度數據{Lucy,浙江},三維度數據{Lucy,浙江,寧波},四維度數據{Lucy,浙江,寧波,list, taobao. com},五維度數據{Lucy,浙江,寧波,list,taobao. com, firefox};一維度數據{Bell},二維度數據{Bel I,浙江},三維度數據{Bell,浙江,金華},四維度數據{Bell,浙江,金華,list, taobao. com},五維度數據{Bell,浙江,金華,list,taobao. com, ie8};一維度數據{Bell},二維度數據{Bel I,浙江},三維度數據{Bell,浙江,臺州},四維度數據{Bell,浙江,臺州,list, taobao. com},五維度數據{Bell,浙江,臺州,list,taobao. com, ie8}。初始子文件2包括一維度數據{Mike},二維度數據{Mike,浙江},三維度數據{Mike,浙江,杭州},四維度數據{Mike,浙江,杭州,www. taobao. com},五維度數據{Mike,浙江,杭州,www.taobao. com, ie8};—維度數據{Lucy}, 二維度數據{Lucy,浙江},三維度數據{Lucy,浙江,寧波},四維度數據{Lucy,浙江,寧波,list, taobao. com},五維度數據{Lucy,浙江,寧波,list,taobao. com, firefox};—維度數據{Lucy}, 二維度數據{Lucy,浙江},三維度數據{Lucy,浙江,寧波},四維度數據{Lucy,浙江,寧波,list, taobao. com},五維度數據{Lucy,浙江,寧波,list,taobao. com, ie8};—維度數據{Nancy}, 二維度數據{Nancy,浙江},三維度數據{Nancy,浙江,金華},四維度數據{Nancy,浙江,金華,www. taobao. com},五維度數據{Nancy,浙江,金華,www. taobao. com, ie8};
—維度數據{Nancy}, 二維度數據{Nancy,浙江},三維度數據{Nancy,浙江,金華},四維度數據{Nancy,浙江,金華,list, taobao. com},五維度數據{Nancy,浙江,金華,list.taobao. com, ie8};—維度數據{Nancy}, 二維度數據{Nancy,浙江},三維度數據{Nancy,浙江,臺州},四維度數據{Nancy,浙江,臺州,list, taobao. com},五維度數據{Nancy,浙江,臺州,list.taobao. com, ie8}。確定的網絡日志文件的劃分值分別為Mike、Lucy、Bell和Nancy。運用Hash算法對各個多維度數據包含的劃分值進行計算,在計算過程中選取特定的轉換方法將上述兩個初始子文件中的不同多維度數據劃分至兩個子日志文件中,每個子日志文件的不同多維度數據對應兩個用戶。子日志文件A包括一維度數據{Bell},二維度數據{Bell,浙江},三維度數據{Bell,浙江,金華},四維度數據{Bell,浙江,金華,list, taobao. com},五維度數據{Bell,浙江,金華,list, taobao. com, ie8};一維度數據{Bell},二維度數據{Bel I,浙江},三維度數據{Bell,浙江,臺州},四維度數據{Bell,浙江,臺州,list, taobao. com},五維度數據{Bell,浙江,臺州,list,taobao. com, ie8};—維度數據{Lucy}, 二維度數據{Lucy,浙江},三維度數據{Lucy,浙江,寧波},四維度數據{Lucy,浙江,寧波,list, taobao. com},五維度數據{Lucy,浙江,寧波,list,taobao. com, firefox};—維度數據{Lucy}, 二維度數據{Lucy,浙江},三維度數據{Lucy,浙江,寧波},四維度數據{Lucy,浙江,寧 波,list, taobao. com},五維度數據{Lucy,浙江,寧波,list,taobao. com, firefox};—維度數據{Lucy}, 二維度數據{Lucy,浙江},三維度數據{Lucy,浙江,寧波},四維度數據{Lucy,浙江,寧波,list, taobao. com},五維度數據{Lucy,浙江,寧波,list,taobao. com, ie8}。子日志文件B包括一維度數據{Mike},二維度數據{Mike,浙江},三維度數據{Mike,浙江,杭州},四維度數據{Mike,浙江,杭州,www. taobao. com},五維度數據{Mike,浙江,杭州,www.taobao. com, ie8};一維度數據{Mike},二維度數據{Mike,浙江},三維度數據{Mike,浙江,杭州},四維度數據{Mike,浙江,杭州,s. taobao. com},五維度數據{Mike,浙江,杭州,s. taobao.com, ie8};一維度數據{Mike},二維度數據{Mike,浙江},三維度數據{Mike,浙江,杭州},四維度數據{Mike,浙江,杭州,www. taobao. com},五維度數據{Mike,浙江,杭州,www.taobao. com, ie8};一維度數據{Nancy}, 二維度數據{Nancy,浙江},三維度數據{Nancy,浙江,金華},四維度數據{Nancy,浙江,金華,list, taobao. com},五維度數據{Nancy,浙江,金華,list.taobao. com, ie8};—維度數據{Nancy}, 二維度數據{Nancy,浙江},三維度數據{Nancy,浙江,臺州},四維度數據{Nancy,浙江,臺州,list, taobao. com},五維度數據{Nancy,浙江,臺州,list.taobao. com, ie8}。對上述子日志文件A按照多維度數據順序依次掃描,對于第一個多維度數據,直接保留Bell至一維度數據集合,保留Bell,浙江至二維度數據集合,Bell,浙江,金華至三維度數據集合,Bell,浙江,金華,list, taobao. com至四維度數據集合,Bell,浙江,金華,list, taobao. com, ie8至五維度數據集合。對于第二個多維度數據中不同維度的多維度數據,分別與上一次保留至集合中對應維度的多維度數據比較,判斷出第二個多維度數據為上一次保留至集合中的第一個多維度數據的相同的多維度數據,因此刪除第二個多維度數據。對于第三個多維度數據中不同維度的多維度數據,分別與上一次保留至集合中對應維度的多維度數據比較,判斷出第二個多維度數據中不同維度的多維度數據與上一次保留至集合中對應維度的多維度數據不相同,因此,保留Lucy至一維度數據集合,保留Lucy,浙江至二維度數據集合,Lucy,浙江,寧波至三維度數據集合,Lucy,浙江,寧波,list,taobao. com至四維度數據集合,Lucy,浙江,寧波,list, taobao. com, firefox至五維度數據集合。對于第四個多維度數據中不同維度的多維度數據,分別與上一次保留至集合中對應維度的多維度數據比較,判斷出第四個多維度數據中不同維度的多維度數據與上一次保留至集合中對應維度的多維度數據相同,因此刪除第四個多維度數據。對于第五個多維度數據中不同維度的多維度數據與上一次保留至集合中對應維度的多維度數據,判斷出第五個多維度數據中維度為5的多維度數據與上一次保留至集合中對應維度的多維度數據不相同,因此,保留Nancy,浙江,臺州,list, taobao. com, ie8至五維度數據集合。
`
至此,完成對子日志文件A的去重過程。同樣,子日志文件B按照上述比較判斷過程進行去重。需要說明的是本申請的多維度數據去重方法可基于一個分布式系統基礎架構——Hadoop架構的一個應用,在劃分之后,Hadoop架構會對日志子文件中的多維度數據進行排序,例如日志子文件包括多維度數據{a, b}, {a, b, c}, {a, b, c, d}, {a, b, c, d, e},{a, b}, {a, b, d}, {a, b, d, e}, {a, b, d, e, c},則其排序過程為將{a, b}, {a, b, c}, {a, b, c,d}和{a, b, c, d, e}排在一組,而將{a, b}, {a, b, d}, {a, b, d, e}和{a, b, d, e, c}排在另一組。不同組的多維度數據分別進行去重過程,且在去重過程中可以分別實現組中的三維度數據至五維度數據的一次去重。對于不同組中的二維度數據{a,b},本系統只保留第一組中的二維度數據{a,b}。其中,本系統為運行本申請的多維度數據去重方法的系統。在按照上述方式對網絡日志文件中的多維度數據去重時,假如該網絡日志文件中包含30億的多維度數據,其存儲占用的空間為300G。服務器需要對網絡日志文件進行5個維度的去重,發明人采用200臺服務器對30億的多維度數據進行反復去重實驗,發現采用現有技術去重時,掃描的多維度數據個數約為30億*4 = 120億,存儲占用的空間為300G*4=1200G,去重時間為60分鐘左右。而采用本實施例提供的多維度數據去重方法,掃描的多維度數據個數為30億,存儲占用的空間為300G,去重時間為12分鐘,與現有技術所消耗的去重時間相比大大降低。
此外,本實施例可以將網絡日志文件拆分為多個初始子文件,由不同的服務器處理不同的子文件,從而可以避免使用一個服務器處理網絡日志文件時,導致服務器性能降低,甚至癱瘓。進一步,本實施例可以采用Hash算法計算得出關鍵字,再依據關鍵字對網絡日志文件中的不同多維度數據進行劃分,以保證不同子日志文件中的多維度數據個數相對平均,可以進一步避免服務器性能降低,從而避免服務器癱瘓。對于前述的各方法實施例,為了簡單描述,故將其都表述為一系列的動作組合,但是本領域技術人員應該知悉,本申請并不受所描述的動作順序的限制,因為依據本申請,某些步驟可以采用其他順序或者同時進行。其次,本領域技術人員也應該知悉,說明書中所描述的實施例均屬于優選實·施例,所涉及的動作和模塊并不一定是本申請所必須的。與上述本申請一種多維度數據去重方法實施例1所提供的方法相對應,參見圖5,本申請還提供了一種多維度數據去重系統實施例1,在本實施例中,該系統可以包括劃分值確定模塊51、劃分模塊52、判斷模塊53和刪除模塊54。其中劃分值確定模塊51,用于依據網絡日志文件中任一維度值的多維度數據的屬性值確定劃分值,其中,所述任一維度值小于所述網絡日志文件中各個維度的多維度數據的最大維度。劃分值確定模塊51,具體用于將所述網絡日志文件中維度為I的一維度數據的屬性值確定為劃分值。當維度為I時,一維度數據確定的劃分值可以與其屬性值相同,也可以為屬性值的范圍值。當然,劃分值確定模塊51還可以具體用于依據維度大于1,且小于最大維度的多維度數據的屬性值確定劃分值。當維度不為I時,該維度對應的多維度數據確定的劃分值可以為多個屬性值的組合,也可以為多個屬性值中的一個屬性值,還可以為多個屬性值中一個屬性值的范圍值。劃分值和屬性值的對應關系的舉例說明請參閱方法實施例1中的說明,對此不再加以具體闡述。劃分模塊52,用于將所述網絡日志文件中包含相同的所述劃分值的不同多維度數據劃分至一個子日志文件。在劃分值確定模塊51所依據的任一維度值為I和其他數值時,劃分值確定模塊51確定的劃分值的數值不同,進一步劃分模塊52對網絡日志文件中不同多維度數據的劃分過程也不同,具體請參閱方法實施例1中的說明。劃分模塊52可以采用上述依據劃分值進行劃分,其還可以運用Hash算法對劃分值進行計算,得出關鍵字,再利用關鍵字進行劃分。例如圖6所示的劃分模塊52的結構框圖,該劃分模塊52則是利用關鍵字對不同多維度數據進行劃分。劃分模塊52包括關鍵字計算單元521和第一劃分單元522。其中關鍵字計算單元521,用于運用Hash算法對各個多維度數據包含的所述劃分值進行計算,得出關鍵字。第一劃分單元522,用于將具有完全相同關鍵字的各個多維度數據劃分至一個子日志文件。上述劃分模塊52依據關鍵字劃分時,可以將網絡日志文件中同一用戶對應的不同多維度數據劃分至同一個子日志文件,且不同子日志文件中的多維度數據相對平均。因此,在本實施例中劃分模塊52優選采用上述依據關鍵字劃分的方式。判斷模塊53,用于對于所述子日志文件中的任一個多維度數據,判斷是否存在與其屬性及屬性值都相同的多維度數據。刪除模塊54,用于在所述判斷模塊的結果為是的情況下,刪除與所述任一個多維度數據相同的多維度數據。需要說明的是在任一維度值不為1,且維度小于任一維度值的多維度數據不包括所述劃分值的情況下,本優選實施例1提供的多維度數據去重系統在圖1所示的基礎上,增加了數據選取模塊55,如圖7所示。圖7是本申請的一種多維度數據去重系統優選實施例I的另一種結構框圖,其中數據選取模塊55,用于選取所述網絡日志文件中維度相同,且小于所述任一維度值的各個多維度數據。劃分模塊52,還用于運用Hash算法對所選取的各個多維度數據進行計算,得出所選取的各個多維度數據的關鍵字,將具有完全相同關鍵字的各個多維度數據劃分至一個子日志文件。本實施例所述的系統可以集成到搜索引擎的服務器上,也可以單獨作為一個實體與搜索引擎服務器相連,另外,需要說明的是,當本申請所述的方法采用軟件實現時,可以作為搜索引擎的服務器新增的一個功能,也可以單獨編寫相應的程序,本申請不限定所述方法或系統的實現方式。本實施例中,劃分值確定模塊51依據任一維度值小于最大維度的多維度數據的屬性值確定劃分值,因此劃分模塊52在對多個維度的多維度數據劃分時,可以一次對多個維度的多維度數據進行劃分,從而減少了劃分次數,減少對網絡日志文件中所有維度的多維度數據的掃描時間,進一步 在去重的整體過程中,減少了多維度數據的去重時間,提高了
去重效率。優選地,在本實施例中,劃分值確定模塊51依據維度為I的一維度數據的屬性值確定劃分值,因此劃分模塊52可以一次劃分即可完成劃分所有多維度數據,從而減少對網絡日志文件中所有維度的多維度數據的掃描時間,進一步在去重的整體過程中,減少了多維度數據的去重時間,提高了去重效率。更進一步地,如果后續服務器還需要對該網絡日志文件中的多維度數據進行分析,也會因為去重效率提高而加快分析過程。與上述本申請一種多維度數據去重方法實施例2所提供的方法相對應,參見圖8,本申請還提供了一種多維度數據去重系統的優選實施例2,在本實施例中,該系統中的劃分模塊52具體可以包括拆分單元523和第二劃分單元524。其中拆分單元523,用于依據所述網絡日志文件的大小,將所述網絡日志文件拆分為多個初始子文件。拆分單元523之所以依據網絡日志文件大小,將網絡日志文件拆分為多個初始子文件,是為了由不同的進程處理不同的子文件,即由不同的服務器處理不同的子文件,從而可以避免使用一個服務器處理網絡日志文件時,導致服務器性能降低,甚至癱瘓。第二劃分單元524,用于將所述多個初始子文件中包含相同劃分值的多維度數據劃分至一個目標子文件中,并將所述目標子文件作為子日志文件,其中所述目標子文件為所述多個初始子文件中的一個。第二劃分單元524可以采用依據劃分值進行劃分,其還可以運用Hash算法對劃分值進行計算,得出關鍵字,再利用關鍵字進行劃分。例如圖9所示的第二劃分單元524的結構框圖,該第二劃分單元524則是利用關鍵字對不同多維度數據進行劃分。第二劃分單元524包括關鍵字計算子單元5241和劃分子單元5242。其中關鍵字計算子單元5241,用于運用Hash算法對各個多維度數據包含的所述劃分值進行計算,得出關鍵字。劃分子單元5242,用于將具有完全相同關鍵字的各個多維度數據劃分至一個目標子文件,并將所述目標子文件作為子日志文件。實際環境中,本實施例提供的多維度數據去重系統對網絡日志文件中不同多維度數據的去重過程可以參閱方法實施例2中的舉例說明,對此不再加以闡述。在本實施例中,劃分模塊52可以將網絡日志文件拆分為多個初始子文件,由不同的服務器處理不同的子文件,從而可以避免使用一個服務器處理網絡日志文件時,導致服務器性能降低,甚至癱瘓。進一步,本實施例中,劃分模塊52的第二劃分單元524可以采用Hash算法計算得出關鍵字,再依據關鍵字對網絡日志文件中的不同多維度數據進行劃分,以保證不同子日志文件中的多維度數據個數相對平均,可以進一步避免服務器性能降低,從而避免服務器癱瘓。需要說明的 是,本說明書中的各個實施例均采用遞進的方式描述,每個實施例重點說明的都是與其他實施例的不同之處,各個實施例之間相同相似的部分互相參見即可。對于系統類實施例而言,由于其與方法實施例基本相似,所以描述的比較簡單,相關之處參見方法實施例的部分說明即可。最后,還需要說明的是,在本文中,諸如第一和第二等之類的關系術語僅僅用來將一個實體或者操作與另一個實體或操作區分開來,而不一定要求或者暗示這些實體或操作之間存在任何這種實際的關系或者順序。而且,術語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或
者設備所固有的要素。在沒有更多限制的情況下,由語句“包括一個......”限定的要素,
并不排除在包括所述要素的過程、方法、物品或者設備中還存在另外的相同要素。為了描述的方便,描述以上系統時以功能分為各種單元分別描述。當然,在實施本申請時可以把各單元的功能在同一個或多個軟件和/或硬件中實現。通過以上的實施方式的描述可知,本領域的技術人員可以清楚地了解到本申請可借助軟件加必需的通用硬件平臺的方式來實現。基于這樣的理解,本申請的技術方案本質上或者說對現有技術做出貢獻的部分可以以軟件產品的形式體現出來,該計算機軟件產品可以存儲在存儲介質中,如R0M/RAM、磁碟、光盤等,包括若干指令用以使得一臺計算機設備(可以是個人計算機,服務器,或者網絡設備等)執行本申請各個實施例或者實施例的某些部分所述的方法。以上對本申請所提供的一種多維度數據去重方法及系統進行了詳細介紹,本文中應用了具體個例對本申請的原理及實施方式進行了闡述,以上實施例的說明只是用于幫助理解本申請的方法及其核心思想;同時,對于本領域的一般技術人員,依據本申請的思想,在具體實施方式
及應用范圍上均會有改變之處,綜上所述,本說明書內容不應理解為對本申請的限制.
權利要求
1.一種多維度數據去重方法,其特征在于,該方法包括 依據網絡日志文件中任一維度值的多維度數據的屬性值確定劃分值,其中,所述任一維度值小于所述網絡日志文件中各個維度的多維度數據的最大維度; 將所述網絡日志文件中包含相同的所述劃分值的不同多維度數據劃分至一個子日志文件; 對于所述子日志文件中的任一個多維度數據,判斷是否存在與其屬性及屬性值都相同的多維度數據,如果是,則刪除與所述任一個多維度數據相同的多維度數據。
2.根據權利要求1所述的方法,其特征在于,所述依據網絡日志文件中任一維度值的多維度數據的屬性值確定劃分值包括將網絡日志文件中維度為I的一維度數據的屬性值確定為劃分值。
3.根據權利要求1所述的方法,其特征在于,在所述任一維度值不為1,且維度小于任一維度值的多維度數據不包括所述劃分值的情況下,所述方法還包括 選取所述網絡日志文件中維度相同,且小于所述任一維度值的各個多維度數據; 運用Hash算法對所選取的各個多維度數據進行計算,得出所選取的各個多維度數據的關鍵字; 將具有完全相同的關鍵字的各個多維度數據劃分至一個子日志文件。
4.根據權利要求1至3任意一項所述的方法,其特征在于,所述將所述網絡日志文件中包含有相同的所述劃分值的多維度數據劃分至一個子日志文件包括 運用Hash算法對各個多維度數據包含的所述劃分值進行計算,得出關鍵字; 將具有完全相同關鍵字的各個多維度數據劃分至一個子日志文件。
5.根據權利要求1至3任意一項所述的方法,其特征在于,所述將所述網絡日志文件中包含相同的所述劃分值的不同多維度數據劃分至一個子日志文件包括 依據所述網絡日志文件的大小,將所述網絡日志文件拆分為多個初始子文件; 將所述多個初始子文件中包含相同劃分值的多維度數據劃分至一個目標子文件中,并將所述目標子文件作為子日志文件,其中所述目標子文件為所述多個初始子文件中的一個。
6.根據權利要求5所述的方法,其特征在于,所述將所述多個初始子文件中包含相同劃分值的多維度數據劃分至一個目標子文件中,并將所述目標子文件作為子日志文件包括 運用Hash算法對各個多維度數據包含的所述劃分值進行計算,得出關鍵字; 將具有完全相同的關鍵字的各個多維度數據劃分至一個目標子文件,并將所述目標子文件作為子日志文件。
7.—種多維度數據去重系統,其特征在于,該系統包括 劃分值確定模塊,用于依據網絡日志文件中任一維度值的多維度數據的屬性值確定劃分值,其中,所述任一維度值小于所述網絡日志文件中各個維度的多維度數據的最大維度; 劃分模塊,用于將所述網絡日志文件中包含相同的所述劃分值的不同多維度數據劃分至一個子日志文件; 判斷模塊,用于對于所述子日志文件中的任一個多維度數據,判斷是否存在與其屬性及屬性值都相同的多維度數據; 刪除模塊,用于在所述判斷模塊的結果為是的情況下,刪除與所述任一個多維度數據相同的多維度數據。
8.根據權利要求7所述的系統,其特征在于,所述劃分值確定模塊,具體用于將所述網絡日志文件中維度為I的一維度數據的屬性值確定為劃分值。
9.根據權利要求7所述的系統,其特征在于,在所述任一維度值不為1,且維度小于任一維度值的多維度數據不包括所述劃分值的情況下,所述系統還包括 數據選取模塊,用于選取所述網絡日志文件中維度相同,且小于所述任一維度值的各個多維度數據; 所述劃分模塊,還用于運用Hash算法對所選取的各個多維度數據進行計算,得出所選取的各個多維度數據的關鍵字,將具有完全相同關鍵字的各個多維度數據劃分至一個子日志文件。
10.根據權利要求7至9任意一項所述的系統,其特征在于,所述劃分模塊包括 關鍵字計算單元,用于運用Hash算法對各個多維度數據包含的所述劃分值進行計算,得出關鍵字; 第一劃分單元,用于將具有完全相同關鍵字的各個多維度數據劃分至一個子日志文件。
全文摘要
本申請提供了一種多維度數據去重方法及系統,所述方法包括依據網絡日志文件中任一維度值的多維度數據的屬性值確定劃分值,其中,任一維度值小于網絡日志文件中各個維度的多維度數據的最大維度;將網絡日志文件中包含相同的劃分值的不同多維度數據劃分至一個子日志文件;對于子日志文件中的任一個多維度數據,判斷是否存在與其屬性及屬性值都相同的多維度數據,如果是,則刪除與任一個多維度數據相同的多維度數據。應用本申請實施例提供的多維度數據去重方法,可以一次對多維度數據進行劃分,從而減少了劃分次數,減少對網絡日志文件中所有維度的多維度數據的掃描時間,進一步在去重整體過程中,減少了多維度數據的去重時間,提高了去重效率。
文檔編號G06F17/30GK103036697SQ20111030184
公開日2013年4月10日 申請日期2011年10月8日 優先權日2011年10月8日
發明者呂春建 申請人:阿里巴巴集團控股有限公司