本發(fā)明涉及數(shù)據(jù)處理領(lǐng)域,更具體地,涉及一種基于hive的數(shù)據(jù)處理的方法、系統(tǒng)及終端設(shè)備。
背景技術(shù):
::大數(shù)據(jù)時(shí)代的來(lái)臨,使得數(shù)據(jù)的量越來(lái)越大,數(shù)據(jù)量的持續(xù)增長(zhǎng)給存儲(chǔ)帶來(lái)了一定的壓力。而hadoop集群的存儲(chǔ)規(guī)??偸怯邢薜?,這就需要提供一種更加有效的技術(shù)方案清理數(shù)據(jù)以及能快速恢復(fù)數(shù)據(jù)。一般情形下,hadoop集群數(shù)據(jù)大小超過(guò)預(yù)警線時(shí)(比如當(dāng)hadoop集群數(shù)據(jù)大小超過(guò)存儲(chǔ)大小的80%的預(yù)警線),直接刪除中間數(shù)據(jù)(比如,刪除6個(gè)月前的中間數(shù)據(jù))。這種情形下,hadoop集群數(shù)據(jù)大小是降低了。但是在再次需要使用被刪除的中間數(shù)據(jù)時(shí),就很難對(duì)數(shù)據(jù)進(jìn)行恢復(fù),從而無(wú)法有效地對(duì)所刪除的數(shù)據(jù)進(jìn)行有效的分析處理。技術(shù)實(shí)現(xiàn)要素:為解決上述至少一個(gè)方面的問(wèn)題,本發(fā)明提出了能對(duì)中間數(shù)據(jù)進(jìn)行有效備份,以隨時(shí)對(duì)已清理的中間數(shù)據(jù)進(jìn)行恢復(fù)的基于hive的數(shù)據(jù)處理的方法、系統(tǒng)及終端設(shè)備。為了實(shí)現(xiàn)本發(fā)明的目的,采取如下技術(shù)方案:第一方面,本發(fā)明提供了一種基于hive的數(shù)據(jù)處理的方法。所述基于hive的數(shù)據(jù)處理的方法包括:將hadoop集群數(shù)據(jù)中的源頭數(shù)據(jù)通過(guò)hive映射為源表,源表包括源頭數(shù)據(jù)中用于描述行數(shù)據(jù)標(biāo)記的第一主鍵字段;將hadoop集群數(shù)據(jù)中的由所述源頭數(shù)據(jù)產(chǎn)生的中間數(shù)據(jù)通過(guò)hive映射為中間表,中間表包括中間數(shù)據(jù)從源頭數(shù)據(jù)繼承的所述第一主鍵字段;將欲清理的中間數(shù)據(jù)所對(duì)應(yīng)的中間表中的所述第一主鍵字段備份到備份表;清理所述欲清理的中間數(shù)據(jù)及其所對(duì)應(yīng)的中間表。具體地,所述第一主鍵字段是源頭數(shù)據(jù)中新增的用于標(biāo)記行數(shù)據(jù)的行數(shù)據(jù)主鍵字段。具體地,所述中間表還包括用于描述用戶和產(chǎn)品信息的第二主鍵字段。具體地,所述將hadoop集群數(shù)據(jù)中的由所述源頭數(shù)據(jù)產(chǎn)生的中間數(shù)據(jù)通過(guò)hive映射為中間表之后,還包括:將欲清理的中間數(shù)據(jù)所對(duì)應(yīng)的中間表中的所述第二主鍵字段備份到備份表。具體地,所述將欲清理的中間數(shù)據(jù)所對(duì)應(yīng)的中間表中的所述第一主鍵字段備份到備份表,包括:創(chuàng)建備份表;獲取欲清理的中間數(shù)據(jù)所對(duì)應(yīng)的中間表中的所述第一主鍵字段;將所述第一主鍵字段備份到所述備份表。具體地,所述將欲清理的中間數(shù)據(jù)所對(duì)應(yīng)的中間表中的所述第一主鍵字段備份到備份表之前,還包括:確認(rèn)hadoop集群數(shù)據(jù)的大小達(dá)到閾值。具體地,所述欲清理的中間數(shù)據(jù)為所述中間數(shù)據(jù)中的存儲(chǔ)日期最前面的預(yù)設(shè)清理周期的數(shù)據(jù)或預(yù)設(shè)清理比例的數(shù)據(jù)。具體地,所述清理所述欲清理的中間數(shù)據(jù)及其所對(duì)應(yīng)的中間表之后,還包括:通過(guò)所述備份表與所述源頭數(shù)據(jù)恢復(fù)已清理的中間數(shù)據(jù)。具體地,所述通過(guò)所述備份表與所述源頭數(shù)據(jù)恢復(fù)已清理的中間數(shù)據(jù),包括:將所述備份表與所述源頭數(shù)據(jù)進(jìn)行合并操作,按第一主鍵字段分組執(zhí)行聚合函數(shù)運(yùn)算,得到中間數(shù)據(jù)。具體地,所述通過(guò)所述備份表與所述源頭數(shù)據(jù)恢復(fù)已清理的中間數(shù)據(jù)之前,還包括:確認(rèn)使用備份表所對(duì)應(yīng)的中間數(shù)據(jù)。第二方面,本發(fā)明提供了一種基于hive的數(shù)據(jù)處理的系統(tǒng)。所述基于hive的數(shù)據(jù)處理的系統(tǒng)包括:第一映射模塊,用于將hadoop集群數(shù)據(jù)中的源頭數(shù)據(jù)通過(guò)hive映射為源表,源表包括源頭數(shù)據(jù)中用于描述行數(shù)據(jù)標(biāo)記的第一主鍵字段;第二映射模塊,用于將hadoop集群數(shù)據(jù)中的由所述源頭數(shù)據(jù)產(chǎn)生的中間數(shù)據(jù)通過(guò)hive映射為中間表,中間表包括中間數(shù)據(jù)從源頭數(shù)據(jù)繼承的所述第一主鍵字段;第一備份模塊,用于將欲清理的中間數(shù)據(jù)所對(duì)應(yīng)的中間表中的所述第一主鍵字段備份到備份表;清理模塊,用于清理所述欲清理的中間數(shù)據(jù)及其所對(duì)應(yīng)的中間表。具體地,所述第一主鍵字段是源頭數(shù)據(jù)中新增的用于標(biāo)記行數(shù)據(jù)的行數(shù)據(jù)主鍵字段。具體地,所述中間表還包括用于描述用戶和產(chǎn)品信息的第二主鍵字段。具體地,執(zhí)行所述第二映射模塊之后,還包括:第二備份模塊,用于將欲清理的中間數(shù)據(jù)所對(duì)應(yīng)的中間表中的所述第二主鍵字段備份到備份表。具體地,所述第一備份模塊包括:創(chuàng)建單元,用于創(chuàng)建備份表;獲取單元,用于獲取欲清理的中間數(shù)據(jù)所對(duì)應(yīng)的中間表中的所述第一主鍵字段;備份單元,用于將所述第一主鍵字段備份到所述備份表。具體地,執(zhí)行所述第一備份模塊之前,還包括:第一確認(rèn)模塊,用于確認(rèn)hadoop集群數(shù)據(jù)的大小達(dá)到閾值。具體地,所述欲清理的中間數(shù)據(jù)為所述中間數(shù)據(jù)中的存儲(chǔ)日期最前面的預(yù)設(shè)清理周期的數(shù)據(jù)或預(yù)設(shè)清理比例的數(shù)據(jù)。具體地,所述清理模塊之后,還包括:恢復(fù)模塊,用于通過(guò)所述備份表與所述源頭數(shù)據(jù)恢復(fù)已清理的中間數(shù)據(jù)。具體地,所述恢復(fù)模塊用于:將所述備份表與所述源頭數(shù)據(jù)進(jìn)行合并操作,按第一主鍵字段分組執(zhí)行聚合函數(shù)運(yùn)算,得到中間數(shù)據(jù)。具體地,執(zhí)行所述恢復(fù)模塊之前,還包括:第二確認(rèn)模塊,用于確認(rèn)使用備份表所對(duì)應(yīng)的中間數(shù)據(jù)。第三方面,本發(fā)明還提供了一種終端設(shè)備。所述終端設(shè)備包括處理器和存儲(chǔ)器,存儲(chǔ)有計(jì)算機(jī)程序,所述計(jì)算機(jī)程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)如下步驟:將hadoop集群數(shù)據(jù)中的源頭數(shù)據(jù)通過(guò)hive映射為源表,源表包括源頭數(shù)據(jù)中用于描述行數(shù)據(jù)標(biāo)記的第一主鍵字段;將hadoop集群數(shù)據(jù)中的由所述源頭數(shù)據(jù)產(chǎn)生的中間數(shù)據(jù)通過(guò)hive映射為中間表,中間表包括中間數(shù)據(jù)從源頭數(shù)據(jù)繼承的所述第一主鍵字段;將欲清理的中間數(shù)據(jù)所對(duì)應(yīng)的中間表中的所述第一主鍵字段備份到備份表;清理所述欲清理的中間數(shù)據(jù)及其所對(duì)應(yīng)的中間表。相比現(xiàn)有技術(shù),本發(fā)明的方案具有以下優(yōu)點(diǎn):1.本發(fā)明中的基于hive的數(shù)據(jù)處理的方法,在源頭數(shù)據(jù)中用于描述行數(shù)據(jù)標(biāo)記的第一主鍵字段在源頭數(shù)據(jù)與中間數(shù)據(jù)的繼承的情形下,將所述備份第一主鍵字段到備份表,完成了中間數(shù)據(jù)的有效備份。同時(shí),在不刪除源頭數(shù)據(jù)的情形下,清理中間數(shù)據(jù),釋放足夠的存儲(chǔ)空間,有利于源頭數(shù)據(jù)的存儲(chǔ)。2.本發(fā)明中的基于hive的數(shù)據(jù)處理的方法,會(huì)將所述中間表的主鍵字段,亦即第二主鍵字段備份到所述備份表中,在恢復(fù)所述已清理的中間數(shù)據(jù)時(shí),能利用所述第二主鍵字段起到過(guò)濾的作用,快速恢復(fù)所需要的已清理的中間數(shù)據(jù)。3.本發(fā)明中的基于hive的數(shù)據(jù)處理的方法,利用所述備份表中的所述第一主鍵字段以及所述源頭數(shù)據(jù)執(zhí)行恢復(fù)操作,有效地恢復(fù)了已清理的中間數(shù)據(jù),保證了所述中間數(shù)據(jù)的合理利用,提高了工作的效率。本發(fā)明附加的方面和優(yōu)點(diǎn)將在下面的描述中部分給出,這些將從下面的描述中變得明顯,或通過(guò)本發(fā)明的實(shí)踐了解到。附圖說(shuō)明為了更清楚地說(shuō)明本發(fā)明實(shí)施例中的技術(shù)方案,下面將對(duì)實(shí)施例描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖1示出了本發(fā)明中一種基于hive的數(shù)據(jù)處理的方法的一種實(shí)施例的流程示意圖;圖2示出了本發(fā)明中一種基于hive的數(shù)據(jù)處理的方法的另一種實(shí)施例的流程示意圖;圖3示出了本發(fā)明中一種基于hive的數(shù)據(jù)處理的系統(tǒng)的一種實(shí)施例的結(jié)構(gòu)示意圖;圖4示出了本發(fā)明中一種基于hive的數(shù)據(jù)處理的系統(tǒng)的另一種實(shí)施例的結(jié)構(gòu)示意圖;圖5示出了本發(fā)明中一種終端設(shè)備的一種實(shí)施例的結(jié)構(gòu)示意圖。具體實(shí)施方式為了使本
技術(shù)領(lǐng)域:
:的人員更好地理解本發(fā)明方案,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述。本領(lǐng)域普通技術(shù)人員可以理解,除非另外定義,這里使用的所有術(shù)語(yǔ)(包括技術(shù)術(shù)語(yǔ)和科學(xué)術(shù)語(yǔ)),具有與本發(fā)明所屬領(lǐng)域中的普通技術(shù)人員的一般理解相同的意義。還應(yīng)該理解的是,諸如通用字典中定義的那些術(shù)語(yǔ),應(yīng)該被理解為具有與現(xiàn)有技術(shù)的上下文中的意義一致的意義,并且除非像這里一樣被特定定義,否則不會(huì)用理想化或過(guò)于正式的含義來(lái)解釋。主鍵(primarykey):即主關(guān)鍵字,是表中的一個(gè)或多個(gè)字段,它的值用于唯一地標(biāo)識(shí)表中的某一條記錄。在兩個(gè)表的關(guān)系中,主關(guān)鍵字用來(lái)在一個(gè)表中引用來(lái)自于另一個(gè)表中的特定記錄。主關(guān)鍵字是一種唯一關(guān)鍵字,表定義的一部分。一個(gè)表不能有多個(gè)主關(guān)鍵字,并且主關(guān)鍵字的列不能包含空值。主關(guān)鍵字是可選的,并且可在createtable或altertable語(yǔ)句中定義。本發(fā)明中,為了區(qū)分源表及中間表的主鍵字段,將所述源表中的主鍵字段命名為第一主鍵字段,將所述中間表的主鍵字段命名為第二主鍵字段。顯然,本發(fā)明所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域技術(shù)人員在沒(méi)有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。如圖1,示出了本發(fā)明中一種基于hive的數(shù)據(jù)處理的方法的一種實(shí)施例。所述基于hive的數(shù)據(jù)處理的方法包括步驟s101-s104。其中:步驟s101.將hadoop集群數(shù)據(jù)中的源頭數(shù)據(jù)通過(guò)hive映射為源表,源表包括源頭數(shù)據(jù)中用于描述行數(shù)據(jù)標(biāo)記的第一主鍵字段。本發(fā)明實(shí)施例中,通過(guò)hive將源數(shù)據(jù)庫(kù)中的數(shù)據(jù)文件映射為源表。hive是基于hadoop的一個(gè)數(shù)據(jù)倉(cāng)庫(kù)工具,其可以將結(jié)構(gòu)化的數(shù)據(jù)文件映射為一張張的數(shù)據(jù)庫(kù)表,并提供簡(jiǎn)單的結(jié)構(gòu)化查詢語(yǔ)言查詢功能,可以將結(jié)構(gòu)化查詢語(yǔ)言語(yǔ)句轉(zhuǎn)化為任務(wù)在hadoop上運(yùn)行。其中,所述結(jié)構(gòu)化查詢語(yǔ)言(structuredquerylanguage)簡(jiǎn)稱(chēng)sql,是一種特殊目的的編程語(yǔ)言,是一種數(shù)據(jù)庫(kù)查詢和程序設(shè)計(jì)語(yǔ)言,用于存取數(shù)據(jù)以及查詢、更新和管理數(shù)據(jù)庫(kù)系統(tǒng)。所述第一主鍵字段是行與行數(shù)據(jù)進(jìn)行區(qū)別的標(biāo)記,所述源表包括所述第一主鍵字段,有助于中間數(shù)據(jù)繼承所述第一主鍵字段的值,并將所述中間數(shù)據(jù)進(jìn)行有效的備份,并清理所述中間數(shù)據(jù),釋放存儲(chǔ)空間??梢岳斫獾氖?,主鍵,即主關(guān)鍵字,其是數(shù)據(jù)表的一個(gè)或多個(gè)字段,它的值用于唯一地標(biāo)識(shí)表中的某一條記錄。在兩個(gè)表的關(guān)系中,主鍵用來(lái)在一個(gè)表中引用來(lái)自于另一個(gè)表中的特定記錄。主鍵是一種唯一關(guān)鍵字,表定義的一部分。一個(gè)表不能有多個(gè)主鍵,并且所述主鍵的列不能包含空值。主鍵是可選的。本發(fā)明實(shí)施例中,源表包含源頭數(shù)據(jù)中用于描述行數(shù)據(jù)標(biāo)記的第一主鍵字段,一個(gè)或多個(gè)字段,所述第一主鍵字段的值用于唯一地標(biāo)識(shí)源頭數(shù)據(jù)中的某一條記錄。數(shù)據(jù)記錄是指對(duì)應(yīng)于數(shù)據(jù)源中一行信息的一組完整的相關(guān)信息。例如,客戶郵件列表中的有關(guān)某位客戶的所有信息為一條數(shù)據(jù)記錄。一種優(yōu)選方案中,所述第一主鍵字段是源頭數(shù)據(jù)中唯一的新增的用于標(biāo)記行數(shù)據(jù)的行數(shù)據(jù)主鍵字段。在將所述源頭數(shù)據(jù)通過(guò)hive映射為源表之前,會(huì)對(duì)所述源頭數(shù)據(jù)添加用于區(qū)別行與行數(shù)據(jù)之間的標(biāo)記的第一主鍵字段。在將源頭數(shù)據(jù)映射為源表之后,所述源表中包括源頭數(shù)據(jù)中用于描述行數(shù)據(jù)標(biāo)記的第一主鍵字段。例如,在一種情形中,所述源頭數(shù)據(jù)添加用于標(biāo)記行與行數(shù)據(jù)的第一主鍵字段作為唯一主鍵之前,在將所述源頭數(shù)據(jù)在映射成表時(shí),其所產(chǎn)生的源表如表1所示:字段字段描述session會(huì)話idstime客戶端時(shí)間eventid時(shí)間idplatform平臺(tái)product產(chǎn)品passport用戶表1在為所述源頭數(shù)據(jù)添加用于標(biāo)記行與行數(shù)據(jù)的第一主鍵字段line_key作為唯一主鍵時(shí),在將該源頭數(shù)據(jù)映射成表時(shí),其所產(chǎn)生的源表如下表2所示:字段字段描述line_key新增的行數(shù)據(jù)的主鍵session會(huì)話idstime客戶端時(shí)間eventid時(shí)間idplatform平臺(tái)product產(chǎn)品passport用戶表2從表2可以看到,其比表1多了一個(gè)用于對(duì)行與行數(shù)據(jù)進(jìn)行區(qū)別的主鍵字段line_key。所述源表中包含源頭數(shù)據(jù)中的用于對(duì)行與行數(shù)據(jù)進(jìn)行區(qū)別的第一主鍵字段line_key,有助于后期的中間數(shù)據(jù)的備份、清理及恢復(fù)操作。步驟s102.將hadoop集群數(shù)據(jù)中的由所述源頭數(shù)據(jù)產(chǎn)生的中間數(shù)據(jù)通過(guò)hive映射為中間表,中間表包括中間數(shù)據(jù)從源頭數(shù)據(jù)繼承的所述第一主鍵字段。經(jīng)過(guò)對(duì)上報(bào)收集來(lái)的源頭數(shù)據(jù)進(jìn)行一系列的逐層的數(shù)據(jù)處理,直至計(jì)算出結(jié)果數(shù)據(jù)。中間數(shù)據(jù)為介于源頭數(shù)據(jù)與結(jié)果數(shù)據(jù)之間的數(shù)據(jù)。在本發(fā)明實(shí)施例中,所述中間數(shù)據(jù)由所述源頭數(shù)據(jù)產(chǎn)生。所述源頭數(shù)據(jù)增加用于對(duì)行與行數(shù)據(jù)進(jìn)行區(qū)別的第一主鍵字段作為其唯一主鍵時(shí),所述中間數(shù)據(jù)也會(huì)增加所述第一主鍵字段,同時(shí),所述中間數(shù)據(jù)上的第一主鍵字段的取值繼承于所述源頭數(shù)據(jù)上的第一主鍵字段??梢岳斫獾氖?,所述第一主鍵字段是源表的主鍵字段,其并不等同于中間數(shù)據(jù)或者說(shuō)中間表的主鍵字段。亦即,在通過(guò)hive將中間數(shù)據(jù)庫(kù)的的數(shù)據(jù)文件映射為中間表時(shí),中間表中會(huì)包含中間數(shù)據(jù)從源頭數(shù)據(jù)繼承的所述第一主鍵字段,但所述第一主鍵字段并不是所述中間表的主鍵字段。所述中間表繼承源表的第一主鍵字段的取值,將所述第一主鍵字段作為外鍵,用于與所述源表建立聯(lián)系。所述中間表有助于通過(guò)第一主鍵字段的值去源表所對(duì)應(yīng)的源頭數(shù)據(jù)查詢相關(guān)的數(shù)據(jù)。此外,中間數(shù)據(jù)所對(duì)應(yīng)的中間表,會(huì)存在自己的主鍵,亦即所述中間表會(huì)存在自己的第二主鍵字段。在本發(fā)明中,所述第二主鍵字段的字段的選擇主要是用于描述用戶和產(chǎn)品信息,更進(jìn)一步地,所述第二主鍵字段常用作進(jìn)行數(shù)據(jù)挖掘、數(shù)據(jù)分析等數(shù)據(jù)記錄的標(biāo)記,其有助于快速獲取所需的中間數(shù)據(jù)。例如,源頭數(shù)據(jù)中的唯一主鍵為用于對(duì)行與行數(shù)據(jù)進(jìn)行區(qū)別的line_key。在將所述源頭數(shù)據(jù)通過(guò)hive映射為源表時(shí),源表包括唯一的主鍵——第一主鍵字段line_key,以及字段cid(頻道)、stime(客戶端時(shí)間)、passport(用戶)。所述中間數(shù)據(jù)會(huì)繼承源頭數(shù)據(jù)中的主鍵字段line_key。在將所述中間數(shù)據(jù)通過(guò)hive映射為中間表時(shí),中間表的類(lèi)型多種多樣。以中間表是會(huì)話表為例。所述會(huì)話表包括字段line_key(作為中間表的外鍵,用于關(guān)聯(lián)所述源表)、中間表的主鍵字段passport、start_time、end_time以及其它附屬字段cid(頻道)、stime(客戶端時(shí)間)。所述主鍵字段passport、start_time及end_time即為中間表的第二主鍵字段。步驟s103.將欲清理的中間數(shù)據(jù)所對(duì)應(yīng)的中間表中的所述第一主鍵字段備份到備份表。在清理中間數(shù)據(jù)時(shí),需要對(duì)被清理的中間數(shù)據(jù)進(jìn)行備份,以便所述中間數(shù)據(jù)在被刪除后還能恢復(fù)。所述中間數(shù)據(jù)的恢復(fù),主要在于將中間數(shù)據(jù)所對(duì)應(yīng)的中間表上的所述第一主鍵字段備份到備份表。在本實(shí)施例的一種具體的方案中,所述將欲清理的中間數(shù)據(jù)所對(duì)應(yīng)的中間表中的所述第一主鍵字段備份到備份表,包括:創(chuàng)建備份表;獲取欲清理的中間數(shù)據(jù)所對(duì)應(yīng)的中間表中的所述第一主鍵字段;將所述第一主鍵字段備份到所述備份表。具體地,所述將欲清理的中間數(shù)據(jù)所對(duì)應(yīng)的中間表中的所述第一主鍵字段備份到備份表之前,還包括:確認(rèn)hadoop集群數(shù)據(jù)的大小達(dá)到閾值。在本發(fā)明的實(shí)施例的一種優(yōu)選方案中,在hadoop集群數(shù)據(jù)的大小并不影響到整體的存儲(chǔ)的性能,會(huì)優(yōu)先保留中間數(shù)據(jù)。在hadoop集群數(shù)據(jù)的大小影響到整體的存儲(chǔ)性能時(shí),須釋放存儲(chǔ)空間,以便存儲(chǔ)更長(zhǎng)時(shí)間的數(shù)據(jù)。為了更好地預(yù)判是否需要將中間表的所述第一主鍵字段備份,清理中間數(shù)據(jù),可根據(jù)整體的存儲(chǔ)空間設(shè)置一個(gè)閾值作為預(yù)警線。當(dāng)確定所述hadoop集群數(shù)據(jù)的大小達(dá)到預(yù)設(shè)的閾值,即所述的預(yù)警線時(shí),就會(huì)將欲清理的中間數(shù)據(jù)對(duì)應(yīng)的中間表的第一主鍵字段備份到備份表,并清理所述欲清理的中間數(shù)據(jù)。所述閾值有助于合理地清理中間數(shù)據(jù),保證足夠的存儲(chǔ)空間,提高了數(shù)據(jù)存儲(chǔ)的安全性能并存儲(chǔ)更多更長(zhǎng)時(shí)間的源頭數(shù)據(jù)。例如,設(shè)置一個(gè)關(guān)于hadoop集群數(shù)據(jù)的閾值為80%,當(dāng)確定所述hadoop集群數(shù)據(jù)大于存儲(chǔ)大小的80%時(shí),將所述中間表從源表中繼承來(lái)的第一主鍵字段line_key備份到備份表,清理該line_key對(duì)應(yīng)的中間表及該中間表所對(duì)應(yīng)的中間數(shù)據(jù)。本發(fā)明的另一種實(shí)施例中,所述欲清理的中間數(shù)據(jù)為所述中間數(shù)據(jù)中的存儲(chǔ)日期最前面的預(yù)設(shè)清理周期的數(shù)據(jù)或預(yù)設(shè)清理比例的數(shù)據(jù)。對(duì)中間數(shù)據(jù)的清理以兩種方式進(jìn)行:一、按照預(yù)設(shè)的比例清理所述中間數(shù)據(jù);二、按照存儲(chǔ)日期的時(shí)間長(zhǎng)短清理所述中間數(shù)據(jù)。根據(jù)實(shí)際的情形有選擇性地清理一定比例或一段時(shí)期內(nèi)的中間數(shù)據(jù),改善了中間數(shù)據(jù)的清理機(jī)制,對(duì)中間數(shù)據(jù)進(jìn)行區(qū)別處理/清理,有助于后期的數(shù)據(jù)挖掘、數(shù)據(jù)分析等。例如,當(dāng)所述hadoop集群數(shù)據(jù)的大小達(dá)到閾值時(shí),系統(tǒng)開(kāi)始清理中間數(shù)據(jù)。該情形下,方式一,按照預(yù)設(shè)的比例10%,隨機(jī)或有選擇性清理特定類(lèi)型的占hadoop集群數(shù)據(jù)的10%的中間數(shù)據(jù);方式二,按照預(yù)設(shè)的存儲(chǔ)日期(三個(gè)月前)清理所有三個(gè)月以前的中間數(shù)據(jù)。具體地,本方法步驟s102之后,還包括:將欲清理的中間數(shù)據(jù)所對(duì)應(yīng)的中間表中的所述第二主鍵字段備份到備份表。正如前面所提到的,所述中間表還包括用于描述用戶和產(chǎn)品信息的第二主鍵字段??砂讶粘I钪羞M(jìn)行數(shù)據(jù)挖掘以及數(shù)據(jù)分析等經(jīng)常用到中間數(shù)據(jù)的字段內(nèi)容設(shè)定為第二主鍵字段,并在清理前,將所述中間數(shù)據(jù)所對(duì)應(yīng)的中間表的第二主鍵字段備份到備份表。當(dāng)需要恢復(fù)并使用已被清理的中間數(shù)據(jù)是所述中間表的第二主鍵字段所指向的數(shù)據(jù)時(shí),由于所述備份表當(dāng)中已經(jīng)具有所述第二主鍵字段,就不用再去恢復(fù)已被清理的中間數(shù)據(jù),就能起到一種很好的過(guò)濾效果,減少恢復(fù)操作及恢復(fù)時(shí)間,提高工作效率。步驟s104.清理所述欲清理的中間數(shù)據(jù)及其所對(duì)應(yīng)的中間表。在將所述中間表中的第一主鍵字段備份到所述備份表后,完成了所述中間數(shù)據(jù)的備份,此時(shí),清理所述中間數(shù)據(jù)及其對(duì)應(yīng)的中間表可釋放足夠的存儲(chǔ)空間,以存儲(chǔ)更多的更長(zhǎng)時(shí)間的源頭數(shù)據(jù)等hadoop集群數(shù)據(jù)。當(dāng)需要使用到所述已清理的中間數(shù)據(jù)時(shí),再利用已備份到備份表的第一主鍵字段進(jìn)行恢復(fù)所需的已清理的中間數(shù)據(jù)。如圖2所示,具體地,所述清理所述欲清理的中間數(shù)據(jù)及其所對(duì)應(yīng)的中間表之后,還包括步驟s105。其中,步驟s105:通過(guò)所述備份表與所述源頭數(shù)據(jù)恢復(fù)已清理的中間數(shù)據(jù)??梢岳斫獾氖?,將所述欲清理的中間表的第一主鍵字段備份到備份表的目的,主要在于:在刪除了所述中間表及其對(duì)應(yīng)的中間數(shù)據(jù)后,能夠利用所述備份表上的第一主鍵字段與所述源頭數(shù)據(jù)恢復(fù)已清理的中間數(shù)據(jù)。其中,對(duì)已清理的中間數(shù)據(jù),并不需要恢復(fù)所有的已被清理的中間數(shù)據(jù),可選擇性地恢復(fù)部分對(duì)數(shù)據(jù)挖掘、數(shù)據(jù)分析有用的中間數(shù)據(jù)。具體地,所述通過(guò)所述備份表與所述源頭數(shù)據(jù)恢復(fù)已清理的中間數(shù)據(jù)之前,還包括:確認(rèn)使用備份表所對(duì)應(yīng)的中間數(shù)據(jù)。中間數(shù)據(jù)的類(lèi)型多種多樣,所述已清理的中間數(shù)據(jù)亦然。本發(fā)明實(shí)施例中,在對(duì)已清理的中間數(shù)據(jù)進(jìn)行恢復(fù)時(shí),為了提高恢復(fù)的時(shí)間及效率,在恢復(fù)已清理的中間數(shù)據(jù)之前,根據(jù)實(shí)際的需要,確定所需要使用到的中間數(shù)據(jù),并進(jìn)一步確定所使用到的備份表及所述備份表中的內(nèi)容,選擇部分或特定的中間數(shù)據(jù)進(jìn)行恢復(fù)。例如,恢復(fù)過(guò)去的60天內(nèi)至過(guò)去的30天內(nèi)的已清理的中間數(shù)據(jù)及其對(duì)應(yīng)的中間表。具體地,所述通過(guò)所述備份表與所述源頭數(shù)據(jù)恢復(fù)已清理的中間數(shù)據(jù),包括:將所述備份表與所述源頭數(shù)據(jù)進(jìn)行合并操作,按第一主鍵字段分組執(zhí)行聚合函數(shù)運(yùn)算,得到中間數(shù)據(jù)。在本發(fā)明實(shí)施例中,利用中間數(shù)據(jù)的備份表,恢復(fù)已清理的中間數(shù)據(jù)。利用所述備份表中的第一主鍵字段與所述中間數(shù)據(jù)對(duì)應(yīng)的所述中間數(shù)據(jù)進(jìn)行unionall的合并操作,在根據(jù)所述第一主鍵字段分組執(zhí)行聚合函數(shù)運(yùn)算,從而恢復(fù)所述欲恢復(fù)的中間數(shù)據(jù)。例如,對(duì)于一個(gè)中間數(shù)據(jù)的會(huì)話表dw_huya_user_session(如表4),該會(huì)話表所對(duì)應(yīng)的源表為ods_huya_source_data(如表3)。對(duì)該會(huì)話表增加一個(gè)備份表:dw_huya_user_session_bak,其中所述備份表由會(huì)話表dw_huya_user_session的第二主鍵字段passpor、start_time、end_time和從源頭數(shù)據(jù)繼承的第二主鍵字段line_key組成。每當(dāng)hadoop集群數(shù)據(jù)大小達(dá)到預(yù)警線時(shí),就表示需要清理數(shù)據(jù),因此需要對(duì)欲清理的中間數(shù)據(jù)先備份后清理。先將會(huì)話表中的最早日期的數(shù)據(jù)備份至備份表,然后再上述所述欲清理的中間數(shù)據(jù)及其對(duì)應(yīng)的中間表。不難發(fā)現(xiàn)清理掉的是中間表的附屬字段,后面如果需要使用到這些附屬字段的中間數(shù)據(jù)時(shí),可以利用line_key進(jìn)行恢復(fù)。可以理解的是,源表在實(shí)際的過(guò)程中的字段的數(shù)量是不確定的,第一主鍵字段是為了本文孕育孕育而生的新增字段,從源頭數(shù)據(jù)到中間表會(huì)一路順帶下去。在此處,源表中的多條數(shù)據(jù)合并成會(huì)話表中的一條記錄。字段字段描述line_key新增的行數(shù)據(jù)的主鍵session會(huì)話idstime客戶端時(shí)間eventid時(shí)間idayyuid主播cid頻道platform平臺(tái)product產(chǎn)品passport用戶表3字段字段描述line_key新增的行數(shù)據(jù)的主鍵session會(huì)話idstime客戶端時(shí)間eventid時(shí)間idayyuid主播cid頻道platform平臺(tái)product產(chǎn)品passport用戶start_time會(huì)話開(kāi)始時(shí)間end_time會(huì)話結(jié)束時(shí)間表4所述中間數(shù)據(jù)的恢復(fù):1.備份表與源頭數(shù)據(jù)的所有字段進(jìn)行unionall,所述備份表提供:line_key,passport,start_time,end_time所述源表提供:line_key,session_id,stime,eventid,ayyuid,cid,platform,product2.按字段line_key分組對(duì)需要的字段執(zhí)行聚合函數(shù)max運(yùn)算,即可恢復(fù)注意:這里是用unionall+聚合函數(shù)規(guī)避了join運(yùn)算。具體如下:綜上,所述基于hive的數(shù)據(jù)處理的方法,利用源頭數(shù)據(jù)中的用于描述行數(shù)據(jù)標(biāo)記的第一主鍵字段,不刪除源頭數(shù)據(jù)的情形下,對(duì)中間數(shù)據(jù)進(jìn)行有效的備份。在備份后,清理所述中間數(shù)據(jù)既能存儲(chǔ)更長(zhǎng)時(shí)間的源頭數(shù)據(jù),又能從備份表快速恢復(fù)所述已清理的中間數(shù)據(jù),保證中間數(shù)據(jù)的有效利用。第二方面,本發(fā)明還提供了一種基于hive的數(shù)據(jù)處理的系統(tǒng)。如圖3示出了本發(fā)明中一種基于hive的數(shù)據(jù)處理的系統(tǒng)的一種實(shí)施例。所述基于hive的數(shù)據(jù)處理的系統(tǒng)包括第一映射模塊101、第二映射模塊102、第一備份模塊103及清理模塊104。其中:第一映射模塊101,用于將hadoop集群數(shù)據(jù)中的源頭數(shù)據(jù)通過(guò)hive映射為源表,源表包括源頭數(shù)據(jù)中用于描述行數(shù)據(jù)標(biāo)記的第一主鍵字段。本發(fā)明實(shí)施例中,通過(guò)hive將源數(shù)據(jù)庫(kù)中的數(shù)據(jù)文件映射為源表。hive是基于hadoop的一個(gè)數(shù)據(jù)倉(cāng)庫(kù)工具,其可以將結(jié)構(gòu)化的數(shù)據(jù)文件映射為一張張的數(shù)據(jù)庫(kù)表,并提供簡(jiǎn)單的結(jié)構(gòu)化查詢語(yǔ)言查詢功能,可以將結(jié)構(gòu)化查詢語(yǔ)言語(yǔ)句轉(zhuǎn)化為任務(wù)在hadoop上運(yùn)行。其中,所述結(jié)構(gòu)化查詢語(yǔ)言(structuredquerylanguage)簡(jiǎn)稱(chēng)sql,是一種特殊目的的編程語(yǔ)言,是一種數(shù)據(jù)庫(kù)查詢和程序設(shè)計(jì)語(yǔ)言,用于存取數(shù)據(jù)以及查詢、更新和管理數(shù)據(jù)庫(kù)系統(tǒng)。所述第一主鍵字段是行與行數(shù)據(jù)進(jìn)行區(qū)別的標(biāo)記,所述源表包括所述第一主鍵字段,有助于中間數(shù)據(jù)繼承所述第一主鍵字段的值,并將所述中間數(shù)據(jù)進(jìn)行有效的備份,并清理所述中間數(shù)據(jù),釋放存儲(chǔ)空間??梢岳斫獾氖牵麈I,即主關(guān)鍵字,其是數(shù)據(jù)表的一個(gè)或多個(gè)字段,它的值用于唯一地標(biāo)識(shí)表中的某一條記錄。在兩個(gè)表的關(guān)系中,主鍵用來(lái)在一個(gè)表中引用來(lái)自于另一個(gè)表中的特定記錄。主鍵是一種唯一關(guān)鍵字,表定義的一部分。一個(gè)表不能有多個(gè)主鍵,并且所述主鍵的列不能包含空值。主鍵是可選的。本發(fā)明實(shí)施例中,源表包含源頭數(shù)據(jù)中用于描述行數(shù)據(jù)標(biāo)記的第一主鍵字段,一個(gè)或多個(gè)字段,所述第一主鍵字段的值用于唯一地標(biāo)識(shí)源頭數(shù)據(jù)中的某一條記錄。數(shù)據(jù)記錄是指對(duì)應(yīng)于數(shù)據(jù)源中一行信息的一組完整的相關(guān)信息。例如,客戶郵件列表中的有關(guān)某位客戶的所有信息為一條數(shù)據(jù)記錄。一種優(yōu)選方案中,所述第一主鍵字段是源頭數(shù)據(jù)中唯一的新增的用于標(biāo)記行數(shù)據(jù)的行數(shù)據(jù)主鍵字段。在將所述源頭數(shù)據(jù)通過(guò)hive映射為源表之前,會(huì)對(duì)所述源頭數(shù)據(jù)添加用于區(qū)別行與行數(shù)據(jù)之間的標(biāo)記的第一主鍵字段。在將源頭數(shù)據(jù)映射為源表之后,所述源表中包括源頭數(shù)據(jù)中用于描述行數(shù)據(jù)標(biāo)記的第一主鍵字段。例如,在一種情形中,所述源頭數(shù)據(jù)添加用于標(biāo)記行與行數(shù)據(jù)的第一主鍵字段作為唯一主鍵之前,在將所述源頭數(shù)據(jù)在映射成表時(shí),其所產(chǎn)生的源表如表5所示:字段字段描述session會(huì)話idstime客戶端時(shí)間eventid時(shí)間idplatform平臺(tái)product產(chǎn)品passport用戶表5在為所述源頭數(shù)據(jù)添加用于標(biāo)記行與行數(shù)據(jù)的第一主鍵字段line_key作為唯一主鍵時(shí),在將該源頭數(shù)據(jù)映射成表時(shí),其所產(chǎn)生的源表如下表6所示:字段字段描述line_key新增的行數(shù)據(jù)的主鍵session會(huì)話idstime客戶端時(shí)間eventid時(shí)間idplatform平臺(tái)product產(chǎn)品passport用戶表6從表2可以看到,其比表1多了一個(gè)用于對(duì)行與行數(shù)據(jù)進(jìn)行區(qū)別的主鍵字段line_key。所述源表中包含源頭數(shù)據(jù)中用于對(duì)行與行數(shù)據(jù)進(jìn)行區(qū)別的第一主鍵字段line_key,有助于后期的中間數(shù)據(jù)的備份、清理及恢復(fù)操作。第二映射模塊102,用于將hadoop集群數(shù)據(jù)中的由所述源頭數(shù)據(jù)產(chǎn)生的中間數(shù)據(jù)通過(guò)hive映射為中間表,中間表包括中間數(shù)據(jù)從源頭數(shù)據(jù)繼承的所述第一主鍵字段。經(jīng)過(guò)對(duì)上報(bào)收集來(lái)的源頭數(shù)據(jù)進(jìn)行一系列的逐層的數(shù)據(jù)處理,直至計(jì)算出結(jié)果數(shù)據(jù)。中間數(shù)據(jù)為介于源頭數(shù)據(jù)與結(jié)果數(shù)據(jù)之間的數(shù)據(jù)。在本發(fā)明實(shí)施例中,所述中間數(shù)據(jù)由所述源頭數(shù)據(jù)產(chǎn)生。所述源頭數(shù)據(jù)增加用于對(duì)行與行數(shù)據(jù)進(jìn)行區(qū)別的第一主鍵字段作為其唯一主鍵時(shí),所述中間數(shù)據(jù)也會(huì)增加所述第一主鍵字段,同時(shí),所述中間數(shù)據(jù)上的第一主鍵字段的取值繼承于所述源頭數(shù)據(jù)上的第一主鍵字段??梢岳斫獾氖牵龅谝恢麈I字段是源表的主鍵字段,其并不等同于中間數(shù)據(jù)或者說(shuō)中間表的主鍵字段。亦即,在通過(guò)hive將中間數(shù)據(jù)庫(kù)的的數(shù)據(jù)文件映射為中間表時(shí),中間表中會(huì)包含中間數(shù)據(jù)從源頭數(shù)據(jù)繼承的所述第一主鍵字段,但所述第一主鍵字段并不是所述中間表的主鍵字段。所述中間表繼承源表的第一主鍵字段的取值,將所述第一主鍵字段作為外鍵,用于與所述源表建立聯(lián)系。所述中間表有助于通過(guò)第一主鍵字段的值去源表所對(duì)應(yīng)的源頭數(shù)據(jù)查詢相關(guān)的數(shù)據(jù)。此外,中間數(shù)據(jù)所對(duì)應(yīng)的中間表,會(huì)存在自己的主鍵,亦即所述中間表會(huì)存在自己的第二主鍵字段。在本發(fā)明中,所述第二主鍵字段的字段的選擇主要是用于描述用戶和產(chǎn)品信息,更進(jìn)一步地,所述第二主鍵字段常用作進(jìn)行數(shù)據(jù)挖掘、數(shù)據(jù)分析等數(shù)據(jù)記錄的標(biāo)記,其有助于快速獲取所需的中間數(shù)據(jù)。例如,源頭數(shù)據(jù)中的唯一主鍵用于對(duì)行與行數(shù)據(jù)進(jìn)行區(qū)別的為line_key。在將所述源頭數(shù)據(jù)通過(guò)hive映射為源表時(shí),源表包括唯一的主鍵——第一主鍵字段line_key,以及字段cid(頻道)、stime(客戶端時(shí)間)、passport(用戶)。所述中間數(shù)據(jù)會(huì)繼承源頭數(shù)據(jù)中的主鍵字段line_key。在將所述中間數(shù)據(jù)通過(guò)hive映射為中間表時(shí),中間表的類(lèi)型多種多樣。以中間表是會(huì)話表為例。所述會(huì)話表包括字段line_key(作為中間表的外鍵,用于關(guān)聯(lián)所述源表)、中間表的主鍵字段passport、start_time、end_time以及其它附屬字段cid(頻道)、stime(客戶端時(shí)間)。所述主鍵字段passport、start_time及end_time即為中間表的第二主鍵字段。第一備份模塊103,用于將欲清理的中間數(shù)據(jù)所對(duì)應(yīng)的中間表中的所述第一主鍵字段備份到備份表。在清理中間數(shù)據(jù)時(shí),需要對(duì)被清理的中間數(shù)據(jù)進(jìn)行備份,以便所述中間數(shù)據(jù)在被刪除后還能恢復(fù)。所述中間數(shù)據(jù)的恢復(fù),主要在于將中間數(shù)據(jù)所對(duì)應(yīng)的中間表上的所述第一主鍵字段備份到備份表。在本實(shí)施例的一種具體的方案中,所述第一備份模塊103包括:創(chuàng)建單元,用于創(chuàng)建備份表;獲取單元,用于獲取欲清理的中間數(shù)據(jù)所對(duì)應(yīng)的中間表中的所述第一主鍵字段;備份單元,用于將所述第一主鍵字段備份到所述備份表。具體地,執(zhí)行所述第一備份模塊103之前,還包括:第一確認(rèn)模塊,用于確認(rèn)hadoop集群數(shù)據(jù)的大小達(dá)到閾值。在本發(fā)明的實(shí)施例的一種優(yōu)選方案中,在hadoop集群數(shù)據(jù)的大小并不影響到整體的存儲(chǔ)的性能,會(huì)優(yōu)先保留中間數(shù)據(jù)。在hadoop集群數(shù)據(jù)的大小影響到整體的存儲(chǔ)性能時(shí),須釋放存儲(chǔ)空間,以便存儲(chǔ)更長(zhǎng)時(shí)間的數(shù)據(jù)。為了更好地預(yù)判是否需要將中間表的所述第一主鍵字段備份,清理中間數(shù)據(jù),可根據(jù)整體的存儲(chǔ)空間設(shè)置一個(gè)閾值作為預(yù)警線。當(dāng)確定所述hadoop集群數(shù)據(jù)的大小達(dá)到預(yù)設(shè)的閾值,即所述的預(yù)警線時(shí),就會(huì)將欲清理的中間數(shù)據(jù)對(duì)應(yīng)的中間表的第一主鍵字段備份到備份表,并清理所述欲清理的中間數(shù)據(jù)。所述閾值有助于合理地清理中間數(shù)據(jù),保證足夠的存儲(chǔ)空間,提高了數(shù)據(jù)存儲(chǔ)的安全性能并存儲(chǔ)更多更長(zhǎng)時(shí)間的源頭數(shù)據(jù)。例如,設(shè)置一個(gè)關(guān)于hadoop集群數(shù)據(jù)的閾值為80%,當(dāng)確定所述hadoop集群數(shù)據(jù)大于存儲(chǔ)大小的80%時(shí),將所述中間表從源表中繼承來(lái)的第一主鍵字段line_key備份到備份表,清理該line_key對(duì)應(yīng)的中間表及該中間表所對(duì)應(yīng)的中間數(shù)據(jù)。本發(fā)明的另一種實(shí)施例中,所述欲清理的中間數(shù)據(jù)為所述中間數(shù)據(jù)中的存儲(chǔ)日期最前面的預(yù)設(shè)清理周期的數(shù)據(jù)或預(yù)設(shè)清理比例的數(shù)據(jù)。對(duì)中間數(shù)據(jù)的清理以兩種方式進(jìn)行:一、按照預(yù)設(shè)的比例清理所述中間數(shù)據(jù);二、按照存儲(chǔ)日期的時(shí)間長(zhǎng)短清理所述中間數(shù)據(jù)。根據(jù)實(shí)際的情形有選擇性地清理一定比例或一段時(shí)期內(nèi)的中間數(shù)據(jù),改善了中間數(shù)據(jù)的清理機(jī)制,對(duì)中間數(shù)據(jù)進(jìn)行區(qū)別處理/清理,有助于后期的數(shù)據(jù)挖掘、數(shù)據(jù)分析等。例如,當(dāng)所述hadoop集群數(shù)據(jù)的大小達(dá)到閾值時(shí),系統(tǒng)開(kāi)始清理中間數(shù)據(jù)。該情形下,方式一,按照預(yù)設(shè)的比例10%,隨機(jī)或有選擇性清理特定類(lèi)型的占hadoop集群數(shù)據(jù)的10%的中間數(shù)據(jù);方式二,按照預(yù)設(shè)的存儲(chǔ)日期(三個(gè)月前)清理所有三個(gè)月以前的中間數(shù)據(jù)。具體地,本系統(tǒng)執(zhí)行所述第二映射模塊102之后,還包括:第二備份模塊,用于將欲清理的中間數(shù)據(jù)所對(duì)應(yīng)的中間表中的所述第二主鍵字段備份到備份表。正如前面所提到的,所述中間表還包括用于描述用戶和產(chǎn)品信息的第二主鍵字段。可把日常生活中進(jìn)行數(shù)據(jù)挖掘以及數(shù)據(jù)分析等經(jīng)常用到中間數(shù)據(jù)的字段內(nèi)容設(shè)定為第二主鍵字段,并在清理前,將所述中間數(shù)據(jù)所對(duì)應(yīng)的中間表的第二主鍵字段備份到備份表。當(dāng)需要恢復(fù)并使用已被清理的中間數(shù)據(jù)是所述中間表的第二主鍵字段所指向的數(shù)據(jù)時(shí),由于所述備份表當(dāng)中已經(jīng)具有所述第二主鍵字段,就不用再去恢復(fù)已被清理的中間數(shù)據(jù),就能起到一種很好的過(guò)濾效果,減少恢復(fù)操作及恢復(fù)時(shí)間,提高工作效率。清理模塊104,用于清理所述欲清理的中間數(shù)據(jù)及其所對(duì)應(yīng)的中間表。在將所述中間表中的第一主鍵字段備份到所述備份表后,完成了所述中間數(shù)據(jù)的備份,此時(shí),清理所述中間數(shù)據(jù)及其對(duì)應(yīng)的中間表可釋放足夠的存儲(chǔ)空間,以存儲(chǔ)更多的更長(zhǎng)時(shí)間的源頭數(shù)據(jù)等hadoop集群數(shù)據(jù)。當(dāng)需要使用到所述已清理的中間數(shù)據(jù)時(shí),再利用已備份到備份表的第一主鍵字段進(jìn)行恢復(fù)所需的已清理的中間數(shù)據(jù)。如圖4所示,具體地,所述清理模塊104之后,還包括恢復(fù)模塊105。其中,恢復(fù)模塊s105用于:通過(guò)所述備份表與所述源頭數(shù)據(jù)恢復(fù)已清理的中間數(shù)據(jù)??梢岳斫獾氖?,將所述欲清理的中間表的第一主鍵字段備份到備份表的目的,主要在于:在刪除了所述中間表及其對(duì)應(yīng)的中間數(shù)據(jù)后,能夠利用所述備份表上的第一主鍵字段與所述源頭數(shù)據(jù)恢復(fù)已清理的中間數(shù)據(jù)。其中,對(duì)已清理的中間數(shù)據(jù),并不需要恢復(fù)所有的已被清理的中間數(shù)據(jù),可選擇性地恢復(fù)部分對(duì)數(shù)據(jù)挖掘、數(shù)據(jù)分析有用的中間數(shù)據(jù)。具體地,執(zhí)行所述恢復(fù)模塊105之前,還包括:第二確認(rèn)模塊,用于確認(rèn)使用備份表所對(duì)應(yīng)的中間數(shù)據(jù)。中間數(shù)據(jù)的類(lèi)型多種多樣,所述已清理的中間數(shù)據(jù)亦然。本發(fā)明實(shí)施例中,在對(duì)已清理的中間數(shù)據(jù)進(jìn)行恢復(fù)時(shí),為了提高恢復(fù)的時(shí)間及效率,在恢復(fù)已清理的中間數(shù)據(jù)之前,根據(jù)實(shí)際的需要,確定所需要使用到的中間數(shù)據(jù),并進(jìn)一步確定所使用到的備份表及所述備份表中的內(nèi)容,選擇部分或特定的中間數(shù)據(jù)進(jìn)行恢復(fù)。例如,恢復(fù)過(guò)去的60天內(nèi)至過(guò)去的30天內(nèi)的已清理的中間數(shù)據(jù)及其對(duì)應(yīng)的中間表。具體地,所述恢復(fù)模塊105用于:將所述備份表與所述源頭數(shù)據(jù)進(jìn)行合并操作,按第一主鍵字段分組執(zhí)行聚合函數(shù)運(yùn)算,得到中間數(shù)據(jù)。在本發(fā)明實(shí)施例中,利用中間數(shù)據(jù)的備份表,恢復(fù)已清理的中間數(shù)據(jù)。利用所述備份表中的第一主鍵字段與所述中間數(shù)據(jù)對(duì)應(yīng)的所述中間數(shù)據(jù)進(jìn)行unionall的合并操作,在根據(jù)所述第一主鍵字段分組執(zhí)行聚合函數(shù)運(yùn)算,從而恢復(fù)所述欲恢復(fù)的中間數(shù)據(jù)。例如,對(duì)于一個(gè)中間數(shù)據(jù)的會(huì)話表dw_huya_user_session(如表8),該會(huì)話表所對(duì)應(yīng)的源表為ods_huya_source_data(如表7)。對(duì)該會(huì)話表增加一個(gè)備份表:dw_huya_user_session_bak,其中所述備份表由會(huì)話表dw_huya_user_session的第二主鍵字段passpor、start_time、end_time和從源頭數(shù)據(jù)繼承的第二主鍵字段line_key組成。每當(dāng)hadoop集群數(shù)據(jù)大小達(dá)到預(yù)警線時(shí),就表示需要清理數(shù)據(jù),因此需要對(duì)欲清理的中間數(shù)據(jù)先備份后清理。先將會(huì)話表中的最早日期的數(shù)據(jù)備份至備份表,然后再上述所述欲清理的中間數(shù)據(jù)及其對(duì)應(yīng)的中間表。不難發(fā)現(xiàn)清理掉的是中間表的附屬字段,后面如果需要使用到這些附屬字段的中間數(shù)據(jù)時(shí),可以利用line_key進(jìn)行恢復(fù)。可以理解的是,源表在實(shí)際的過(guò)程中的字段的數(shù)量是不確定的,第一主鍵字段是為了本文孕育孕育而生的新增字段,從源頭數(shù)據(jù)到中間表會(huì)一路順帶下去。在此處,源表中的多條數(shù)據(jù)合并成會(huì)話表中的一條記錄。字段字段描述line_key新增的行數(shù)據(jù)的主鍵session會(huì)話idstime客戶端時(shí)間eventid時(shí)間idayyuid主播cid頻道platform平臺(tái)product產(chǎn)品passport用戶表7字段字段描述line_key新增的行數(shù)據(jù)的主鍵session會(huì)話idstime客戶端時(shí)間eventid時(shí)間idayyuid主播cid頻道platform平臺(tái)product產(chǎn)品passport用戶start_time會(huì)話開(kāi)始時(shí)間end_time會(huì)話結(jié)束時(shí)間表8所述中間數(shù)據(jù)的恢復(fù):1.備份表與源頭數(shù)據(jù)的所有字段進(jìn)行unionall,所述備份表提供:line_key,passport,start_time,end_time所述源表提供:line_key,session_id,stime,eventid,ayyuid,cid,platform,product2.按字段line_key分組對(duì)需要的字段執(zhí)行聚合函數(shù)max運(yùn)算,即可恢復(fù)注意:這里是用unionall+聚合函數(shù)規(guī)避了join運(yùn)算。具體如下:綜上,所述基于hive的數(shù)據(jù)處理的系統(tǒng),利用源頭數(shù)據(jù)中的用于描述行數(shù)據(jù)標(biāo)記的第一主鍵字段,不刪除源頭數(shù)據(jù)的情形下,對(duì)中間數(shù)據(jù)進(jìn)行有效的備份。在備份后,清理所述中間數(shù)據(jù)既能存儲(chǔ)更長(zhǎng)時(shí)間的源頭數(shù)據(jù),又能從備份表快速恢復(fù)所述已清理的中間數(shù)據(jù),保證中間數(shù)據(jù)的有效利用。此外,如圖5所示,本發(fā)明還提供了一種終端設(shè)備。所述終端設(shè)備包括處理器50和存儲(chǔ)器40,存儲(chǔ)有計(jì)算機(jī)程序,所述計(jì)算機(jī)程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)如下步驟:將hadoop集群數(shù)據(jù)中的源頭數(shù)據(jù)通過(guò)hive映射為源表,源表包括源頭數(shù)據(jù)中用于描述行數(shù)據(jù)標(biāo)記的第一主鍵字段;將hadoop集群數(shù)據(jù)中的由所述源頭數(shù)據(jù)產(chǎn)生的中間數(shù)據(jù)通過(guò)hive映射為中間表,中間表包括中間數(shù)據(jù)從源頭數(shù)據(jù)繼承的所述第一主鍵字段;將欲清理的中間數(shù)據(jù)所對(duì)應(yīng)的中間表中的所述第一主鍵字段備份到備份表;清理所述欲清理的中間數(shù)據(jù)及其所對(duì)應(yīng)的中間表。同時(shí),所述終端設(shè)備能執(zhí)行第一方面所述的基于hive的數(shù)據(jù)處理的方法的所有步驟和實(shí)施例。例如,所述終端設(shè)備執(zhí)行步驟:通過(guò)所述備份表與所述源頭數(shù)據(jù)恢復(fù)已清理的中間數(shù)據(jù)。可以理解的是,將所述欲清理的中間表的第一主鍵字段備份到備份表的目的,主要在于:在刪除了所述中間表及其對(duì)應(yīng)的中間數(shù)據(jù)后,能夠利用所述備份表上的第一主鍵字段與所述源頭數(shù)據(jù)恢復(fù)已清理的中間數(shù)據(jù)。其中,對(duì)已清理的中間數(shù)據(jù),并不需要恢復(fù)所有的已被清理的中間數(shù)據(jù),可選擇性地恢復(fù)部分對(duì)數(shù)據(jù)挖掘、數(shù)據(jù)分析有用的中間數(shù)據(jù)。又例如,所述通過(guò)所述備份表與所述源頭數(shù)據(jù)恢復(fù)已清理的中間數(shù)據(jù)之前,所述終端設(shè)備執(zhí)行步驟:確認(rèn)使用備份表所對(duì)應(yīng)的中間數(shù)據(jù)。中間數(shù)據(jù)的類(lèi)型多種多樣,所述已清理的中間數(shù)據(jù)亦然。本發(fā)明實(shí)施例中,在對(duì)已清理的中間數(shù)據(jù)進(jìn)行恢復(fù)時(shí),為了提高恢復(fù)的時(shí)間及效率,在恢復(fù)已清理的中間數(shù)據(jù)之前,根據(jù)實(shí)際的需要,確定所需要使用到的中間數(shù)據(jù),并進(jìn)一步確定所使用到的備份表及所述備份表中的內(nèi)容,選擇部分或特定的中間數(shù)據(jù)進(jìn)行恢復(fù)。例如,恢復(fù)過(guò)去的60天內(nèi)至過(guò)去的30天內(nèi)的已清理的中間數(shù)據(jù)及其對(duì)應(yīng)的中間表。綜上,所述終端設(shè)備利用源頭數(shù)據(jù)中的用于描述行數(shù)據(jù)標(biāo)記的第一主鍵字段,不刪除源頭數(shù)據(jù)的情形下,對(duì)中間數(shù)據(jù)進(jìn)行有效的備份。在備份后,清理所述中間數(shù)據(jù)既能存儲(chǔ)更長(zhǎng)時(shí)間的源頭數(shù)據(jù),又能從備份表快速恢復(fù)所述已清理的中間數(shù)據(jù),保證中間數(shù)據(jù)的有效利用。其中,存儲(chǔ)器40可用于存儲(chǔ)軟件程序以及模塊,處理器50通過(guò)運(yùn)行存儲(chǔ)在存儲(chǔ)器40的軟件程序以及模塊,從而執(zhí)行所述識(shí)別系統(tǒng)的各種功能應(yīng)用以及數(shù)據(jù)處理。存儲(chǔ)器40可主要包括存儲(chǔ)程序區(qū)和存儲(chǔ)數(shù)據(jù)區(qū),其中,存儲(chǔ)程序區(qū)可存儲(chǔ)操作系統(tǒng)、至少一個(gè)功能所需的應(yīng)用程序等;存儲(chǔ)數(shù)據(jù)區(qū)可存儲(chǔ)根據(jù)所述識(shí)別系統(tǒng)的使用所創(chuàng)建的數(shù)據(jù)(比如音頻數(shù)據(jù)、電話本等)等。此外,存儲(chǔ)器40可以包括高速隨機(jī)存取存儲(chǔ)器,還可以包括非易失性存儲(chǔ)器,例如至少一個(gè)磁盤(pán)存儲(chǔ)器件、閃存器件、或其他易失性固態(tài)存儲(chǔ)器件。所述處理器50是服務(wù)器的控制中心,利用各種接口和線路連接整個(gè)所述服務(wù)器的各個(gè)部分,通過(guò)運(yùn)行或執(zhí)行存儲(chǔ)在存儲(chǔ)器40內(nèi)的軟件程序和/或模塊,以及調(diào)用存儲(chǔ)在存儲(chǔ)器40內(nèi)的數(shù)據(jù),執(zhí)行所述服務(wù)器的各種功能和處理數(shù)據(jù),從而對(duì)所述服務(wù)器進(jìn)行整體監(jiān)控??蛇x的,處理器50可包括一個(gè)或多個(gè)處理單元;優(yōu)選的,處理器50可集成應(yīng)用處理器和調(diào)制解調(diào)處理器,其中,應(yīng)用處理器主要處理操作系統(tǒng)、用戶界面和應(yīng)用程序等,調(diào)制解調(diào)處理器主要處理無(wú)線通信。可以理解的是,上述調(diào)制解調(diào)處理器也可以不集成到處理器50中。本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例方法中的全部或部分步驟是可以通過(guò)程序來(lái)指令相關(guān)的硬件完成,所述的程序可以存儲(chǔ)于一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中,上述提到的存儲(chǔ)介質(zhì)可以是只讀存儲(chǔ)器,磁盤(pán)或光盤(pán)等。以上對(duì)本發(fā)明所提供的一種基于hive的數(shù)據(jù)處理的方法、系統(tǒng)及終端設(shè)備進(jìn)行了詳細(xì)介紹,對(duì)于本領(lǐng)域的一般技術(shù)人員,依據(jù)本發(fā)明實(shí)施例的思想,在具體實(shí)施方式及應(yīng)用范圍上均會(huì)有改變之處,綜上所述,本說(shuō)明書(shū)內(nèi)容不應(yīng)理解為對(duì)本發(fā)明的限制。當(dāng)前第1頁(yè)12當(dāng)前第1頁(yè)12