本申請實(shí)施例涉及數(shù)據(jù)統(tǒng)計(jì)技術(shù),尤其涉及一種數(shù)據(jù)統(tǒng)計(jì)方法及裝置。
背景技術(shù):
::隨著越來越激烈的市場競爭,數(shù)據(jù)作為業(yè)務(wù)精細(xì)化運(yùn)營與管理決策的重要依據(jù),成為驅(qū)動互聯(lián)網(wǎng)行業(yè)的根本力量。商家通過數(shù)據(jù)統(tǒng)計(jì)可以準(zhǔn)確的把握用戶的品牌感知,然后針對性的進(jìn)行品牌塑造。數(shù)據(jù)統(tǒng)計(jì)過程中,針對特定的統(tǒng)計(jì)需求訓(xùn)練統(tǒng)計(jì)模型,利用該統(tǒng)計(jì)模型對特定的需求進(jìn)行數(shù)據(jù)統(tǒng)計(jì)。常見的數(shù)據(jù)統(tǒng)計(jì)包括頁面瀏覽量(pageview,pv)、訪客量(uniqueview,uv)、交易額、訂單量等。然而,隨著互聯(lián)網(wǎng)的迅速發(fā)展,使得數(shù)據(jù)越來越海量,海量數(shù)據(jù)越來越不規(guī)則且處于動態(tài)變化之中,商家對數(shù)據(jù)統(tǒng)計(jì)的精細(xì)化要求程度越來越高,除了關(guān)注數(shù)據(jù)統(tǒng)計(jì)的靜態(tài)結(jié)果外,更關(guān)注數(shù)據(jù)的變化趨勢。顯然,針對特定的統(tǒng)計(jì)需求訓(xùn)練處的統(tǒng)計(jì)模型,是遠(yuǎn)遠(yuǎn)無法滿足用戶對海信數(shù)據(jù)的統(tǒng)計(jì)需求的。技術(shù)實(shí)現(xiàn)要素:本申請實(shí)施例提供一種數(shù)據(jù)統(tǒng)計(jì)方法及裝置,通過抽象歸類訓(xùn)練統(tǒng)計(jì)模型,基于該統(tǒng)計(jì)模型進(jìn)行數(shù)據(jù)統(tǒng)計(jì)以滿足用戶對海量數(shù)據(jù)的統(tǒng)計(jì)需求。第一方面,本申請實(shí)施例提供一種數(shù)據(jù)統(tǒng)計(jì)方法,包括:將至少一個(gè)統(tǒng)計(jì)需求場景歸類為一類統(tǒng)計(jì)場景,所述至少一個(gè)統(tǒng)計(jì)需求場景中的每個(gè)統(tǒng)計(jì)需求場景的統(tǒng)計(jì)方式相同;針對所述統(tǒng)計(jì)場景訓(xùn)練統(tǒng)計(jì)模型;確定目標(biāo)統(tǒng)計(jì)需求場景的目標(biāo)表結(jié)構(gòu),所述目標(biāo)表結(jié)構(gòu)用于指示所述目標(biāo)統(tǒng)計(jì)需求場景的統(tǒng)計(jì)目標(biāo),所述目標(biāo)統(tǒng)計(jì)需求場景為所述至少一個(gè)統(tǒng)計(jì)需求場景中的任意一個(gè)統(tǒng)計(jì)需求場景;根據(jù)所述目標(biāo)表結(jié)構(gòu)與統(tǒng)計(jì)模型,對所述目標(biāo)統(tǒng)計(jì)需求場景的所述統(tǒng)計(jì)目標(biāo)進(jìn)行統(tǒng)計(jì)。在一種可行的設(shè)計(jì)中,所述根據(jù)所述目標(biāo)表結(jié)構(gòu)與統(tǒng)計(jì)模型,對所述目標(biāo)統(tǒng)計(jì)需求場景的所述統(tǒng)計(jì)目標(biāo)進(jìn)行統(tǒng)計(jì)之前,還包括:對所述目標(biāo)統(tǒng)計(jì)需求場景配置統(tǒng)計(jì)任務(wù)。在一種可行的設(shè)計(jì)中,所述統(tǒng)計(jì)任務(wù)指示所述目標(biāo)統(tǒng)計(jì)需求場景的即時(shí)統(tǒng)計(jì)任務(wù),所述根據(jù)所述目標(biāo)表結(jié)構(gòu)與統(tǒng)計(jì)模型,對所述目標(biāo)統(tǒng)計(jì)需求場景的所述統(tǒng)計(jì)目標(biāo)進(jìn)行統(tǒng)計(jì),包括:根據(jù)所述目標(biāo)表結(jié)構(gòu)與統(tǒng)計(jì)模型,對所述目標(biāo)統(tǒng)計(jì)需求場景的所述統(tǒng)計(jì)目標(biāo)進(jìn)行即時(shí)統(tǒng)計(jì)。在一種可行的設(shè)計(jì)中,所述統(tǒng)計(jì)任務(wù)指示所述目標(biāo)統(tǒng)計(jì)需求場景的定時(shí)統(tǒng)計(jì)任務(wù),所述根據(jù)所述目標(biāo)表結(jié)構(gòu)與統(tǒng)計(jì)模型,對所述目標(biāo)統(tǒng)計(jì)需求場景的所述統(tǒng)計(jì)目標(biāo)進(jìn)行統(tǒng)計(jì),包括:根據(jù)所述目標(biāo)表結(jié)構(gòu)與統(tǒng)計(jì)模型,對所述目標(biāo)統(tǒng)計(jì)需求場景的所述統(tǒng)計(jì)目標(biāo)進(jìn)行定時(shí)統(tǒng)計(jì)。在一種可行的設(shè)計(jì)中,所述至少一個(gè)統(tǒng)計(jì)需求場景包括第一統(tǒng)計(jì)需求場景和第二統(tǒng)計(jì)需求場景,所述第一統(tǒng)計(jì)需求場景對應(yīng)的表結(jié)構(gòu)和所述第二統(tǒng)計(jì)需求場景對應(yīng)的表結(jié)構(gòu)不同。第二方面,本申請實(shí)施例提供一種數(shù)據(jù)統(tǒng)計(jì)裝置,包括:歸類模塊,用于將至少一個(gè)統(tǒng)計(jì)需求場景歸類為一類統(tǒng)計(jì)場景,所述至少一個(gè)統(tǒng)計(jì)需求場景中的每個(gè)統(tǒng)計(jì)需求場景的統(tǒng)計(jì)方式相同;訓(xùn)練模塊,用于針對所述統(tǒng)計(jì)場景訓(xùn)練統(tǒng)計(jì)模型;確定模塊,用于確定目標(biāo)統(tǒng)計(jì)需求場景的目標(biāo)表結(jié)構(gòu),所述目標(biāo)表結(jié)構(gòu)用于指示所述目標(biāo)統(tǒng)計(jì)需求場景的統(tǒng)計(jì)目標(biāo),所述目標(biāo)統(tǒng)計(jì)需求場景為所述至少一個(gè)統(tǒng)計(jì)需求場景中的任意一個(gè)統(tǒng)計(jì)需求場景;統(tǒng)計(jì)模塊,用于根據(jù)所述目標(biāo)表結(jié)構(gòu)與統(tǒng)計(jì)模型,對所述目標(biāo)統(tǒng)計(jì)需求場景的所述統(tǒng)計(jì)目標(biāo)進(jìn)行統(tǒng)計(jì)。在一種可行的設(shè)計(jì)中,上述的裝置還包括:配置模塊,用于在所述統(tǒng)計(jì)模塊根據(jù)所述目標(biāo)表結(jié)構(gòu)與統(tǒng)計(jì)模型,對所述目標(biāo)統(tǒng)計(jì)需求場景的所述統(tǒng)計(jì)目標(biāo)進(jìn)行統(tǒng)計(jì)之前,對所述目標(biāo)統(tǒng)計(jì)需求場景配置統(tǒng)計(jì)任務(wù)。在一種可行的設(shè)計(jì)中,所述統(tǒng)計(jì)任務(wù)指示所述目標(biāo)統(tǒng)計(jì)需求場景的即時(shí)統(tǒng)計(jì)任務(wù),所述統(tǒng)計(jì)模塊,具體用于根據(jù)所述目標(biāo)表結(jié)構(gòu)與統(tǒng)計(jì)模型,對所述目標(biāo)統(tǒng)計(jì)需求場景的所述統(tǒng)計(jì)目標(biāo)進(jìn)行即時(shí)統(tǒng)計(jì)。在一種可行的設(shè)計(jì)中,所述統(tǒng)計(jì)任務(wù)指示所述目標(biāo)統(tǒng)計(jì)需求場景的定時(shí)統(tǒng)計(jì)任務(wù),所述統(tǒng)計(jì)模塊,具體用于根據(jù)所述目標(biāo)表結(jié)構(gòu)與統(tǒng)計(jì)模型,對所述目標(biāo)統(tǒng)計(jì)需求場景的所述統(tǒng)計(jì)目標(biāo)進(jìn)行定時(shí)統(tǒng)計(jì)。在一種可行的設(shè)計(jì)中,所述至少一個(gè)統(tǒng)計(jì)需求場景包括第一統(tǒng)計(jì)需求場景和第二統(tǒng)計(jì)需求場景,所述第一統(tǒng)計(jì)需求場景對應(yīng)的表結(jié)構(gòu)和所述第二統(tǒng)計(jì)需求場景對應(yīng)的表結(jié)構(gòu)不同。本申請實(shí)施例提供的數(shù)據(jù)統(tǒng)計(jì)方法及裝置,將至少一個(gè)統(tǒng)計(jì)需求場景歸類為一類統(tǒng)計(jì)場景,至少一個(gè)統(tǒng)計(jì)需求場景中的每個(gè)統(tǒng)計(jì)需求場景的統(tǒng)計(jì)方式相同,針對統(tǒng)計(jì)場景訓(xùn)練統(tǒng)計(jì)模型,確定目標(biāo)統(tǒng)計(jì)需求場景的目標(biāo)表結(jié)構(gòu),目標(biāo)表結(jié)構(gòu)用于指示目標(biāo)統(tǒng)計(jì)需求場景的統(tǒng)計(jì)目標(biāo),目標(biāo)統(tǒng)計(jì)需求場景為至少一個(gè)統(tǒng)計(jì)需求場景中的任意一個(gè)統(tǒng)計(jì)需求場景,根據(jù)目標(biāo)表結(jié)構(gòu)與統(tǒng)計(jì)模型,對目標(biāo)統(tǒng)計(jì)需求場景的統(tǒng)計(jì)目標(biāo)進(jìn)行統(tǒng)計(jì)。該過程中,通過抽象歸類,將統(tǒng)計(jì)方式相同的至少一個(gè)統(tǒng)計(jì)需求場景歸類為一類統(tǒng)計(jì)場景,僅針對該統(tǒng)計(jì)場景訓(xùn)練統(tǒng)計(jì)模型,并基于該統(tǒng)計(jì)模型進(jìn)行數(shù)據(jù)統(tǒng)計(jì)以滿足用戶對海量數(shù)據(jù)的統(tǒng)計(jì)需求。同時(shí),通過抽象歸類是抽象出不同統(tǒng)計(jì)需求場景的共性,訓(xùn)練統(tǒng)計(jì)模型時(shí)將公用的處理邏輯封裝,對外提供統(tǒng)一的調(diào)用,能夠很大程度上減少重復(fù)開發(fā)、提高訓(xùn)練模型的可維護(hù)性和通用性。附圖說明圖1為本申請數(shù)據(jù)統(tǒng)計(jì)方法實(shí)施例一的流程圖;圖2為本申請數(shù)據(jù)統(tǒng)計(jì)方法所適用的處理過程示意圖;圖3為本申請數(shù)據(jù)統(tǒng)計(jì)方法所適用的數(shù)據(jù)統(tǒng)計(jì)系統(tǒng)的架構(gòu)示意圖;圖4為本申請數(shù)據(jù)統(tǒng)計(jì)方法中所適用的表映射示意圖;圖5為本申請數(shù)據(jù)統(tǒng)計(jì)裝置實(shí)施例一的結(jié)構(gòu)示意圖;圖6為本申請數(shù)據(jù)統(tǒng)計(jì)裝置實(shí)施例二的結(jié)構(gòu)示意圖。具體實(shí)施方式為使本申請實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本申請實(shí)施例中的附圖,對本申請實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是本申請一部分實(shí)施例,而不是全部的實(shí)施例?;诒旧暾堉械膶?shí)施例,本領(lǐng)域技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實(shí)施例,都屬于本申請保護(hù)的范圍。以下內(nèi)容為結(jié)合附圖及較佳實(shí)施例,對依據(jù)本申請申請的具體實(shí)施方式、結(jié)構(gòu)、特征及其功效的詳細(xì)說明。本申請的說明書和權(quán)利要求書及上述附圖中的術(shù)語“第一”、“第二”、“第三”、“第四”等(如果存在)是用于區(qū)別類似的對象,而不必用于描述特定的順序或先后次序。應(yīng)該理解這樣使用的數(shù)據(jù)在適當(dāng)情況下可以互換,以便這里描述的本申請的實(shí)施例例如能夠以除了在這里圖示或描述的那些以外的順序?qū)嵤?。此外,術(shù)語“包括”和“具有”以及他們的任何變形,意圖在于覆蓋不排他的包含,例如,包含了一系列步驟或單元的過程、方法、系統(tǒng)、產(chǎn)品或設(shè)備不必限于清楚地列出的那些步驟或單元,而是可包括沒有清楚地列出的或?qū)τ谶@些過程、方法、產(chǎn)品或設(shè)備固有的其它步驟或單元。圖1為本申請數(shù)據(jù)統(tǒng)計(jì)方法實(shí)施例一的流程圖,包括:101、將至少一個(gè)統(tǒng)計(jì)需求場景歸類為一類統(tǒng)計(jì)場景,所述至少一個(gè)統(tǒng)計(jì)需求場景中的每個(gè)統(tǒng)計(jì)需求的統(tǒng)計(jì)方式相同。通常來說,很多不同的統(tǒng)計(jì)需求場景都可以用完全相同的處理邏輯去處理,例如:統(tǒng)計(jì)一個(gè)電商平臺的即時(shí)交易額的統(tǒng)計(jì)需求場景和統(tǒng)計(jì)一個(gè)菜單項(xiàng)的點(diǎn)擊次數(shù)的統(tǒng)計(jì)需求場景,都是累加的統(tǒng)計(jì)需求場景,所以屬于同一類統(tǒng)計(jì)場景。再如,對訂單表按照商戶維度統(tǒng)計(jì)出各個(gè)商戶的訂單總金額的統(tǒng)計(jì)需求場景,和對訂單表按照地區(qū)維度統(tǒng)計(jì)出各個(gè)地區(qū)的訂單總金額的統(tǒng)計(jì)需求場景,這兩個(gè)統(tǒng)計(jì)需求場景本質(zhì)上也是同一類統(tǒng)計(jì)需求,實(shí)際實(shí)現(xiàn)時(shí),該兩個(gè)統(tǒng)計(jì)需求場景的訂單表存儲在服務(wù)器,只是統(tǒng)計(jì)過程中使用不同的字段而已,其他的處理邏輯都是完全相同的。本步驟中,將至少一個(gè)統(tǒng)計(jì)需求場景抽象歸類為一類統(tǒng)計(jì)場景,所述至少一個(gè)統(tǒng)計(jì)需求場景中的每個(gè)統(tǒng)計(jì)需求場景的統(tǒng)計(jì)方式相同。其中,抽象歸類是抽象出不同統(tǒng)計(jì)需求場景的共性,將公用的處理邏輯封裝,對外提供統(tǒng)一的調(diào)用,能夠很大程度上減少重復(fù)開發(fā)、提高程序的可維護(hù)性和通用性。102、針對所述統(tǒng)計(jì)場景訓(xùn)練統(tǒng)計(jì)模塊。本步驟中,對抽象歸類出的統(tǒng)計(jì)場景進(jìn)行模型訓(xùn)練,訓(xùn)練出統(tǒng)計(jì)模型。訓(xùn)練過程中,對抽象歸類出的公用的處理邏輯封裝,得到統(tǒng)計(jì)模型,并對外提供統(tǒng)一的調(diào)用。103、確定目標(biāo)統(tǒng)計(jì)需求場景的目標(biāo)表結(jié)構(gòu),所述目標(biāo)表結(jié)構(gòu)用于指示所述目標(biāo)統(tǒng)計(jì)需求場景的統(tǒng)計(jì)目標(biāo),所述目標(biāo)統(tǒng)計(jì)需求場景為所述至少一個(gè)統(tǒng)計(jì)需求場景中的任意一個(gè)統(tǒng)計(jì)需求場景。針對至少一個(gè)統(tǒng)計(jì)場景中的任意一個(gè)突擊需求場景,以下稱之為目標(biāo)統(tǒng)計(jì)需求場景,確定該目標(biāo)統(tǒng)計(jì)需求場景的目標(biāo)表結(jié)構(gòu),該目標(biāo)表結(jié)構(gòu)用于指示目標(biāo)統(tǒng)計(jì)需求場景的統(tǒng)計(jì)目標(biāo),即需要統(tǒng)計(jì)什么。104、根據(jù)所述目標(biāo)表結(jié)構(gòu)與統(tǒng)計(jì)模型,對所述目標(biāo)統(tǒng)計(jì)需求場景的所述統(tǒng)計(jì)目標(biāo)進(jìn)行統(tǒng)計(jì)。在確定出目標(biāo)統(tǒng)計(jì)需求場景的目標(biāo)表結(jié)構(gòu)后,根據(jù)目標(biāo)表結(jié)構(gòu)與統(tǒng)計(jì)模型,對目標(biāo)統(tǒng)計(jì)需求場景的統(tǒng)計(jì)目標(biāo)進(jìn)行統(tǒng)計(jì)。本申請實(shí)施例提供的數(shù)據(jù)統(tǒng)計(jì)方法,將至少一個(gè)統(tǒng)計(jì)需求場景歸類為一類統(tǒng)計(jì)場景,至少一個(gè)統(tǒng)計(jì)需求場景中的每個(gè)統(tǒng)計(jì)需求場景的統(tǒng)計(jì)方式相同,針對統(tǒng)計(jì)場景訓(xùn)練統(tǒng)計(jì)模型,確定目標(biāo)統(tǒng)計(jì)需求場景的目標(biāo)表結(jié)構(gòu),目標(biāo)表結(jié)構(gòu)用于指示目標(biāo)統(tǒng)計(jì)需求場景的統(tǒng)計(jì)目標(biāo),目標(biāo)統(tǒng)計(jì)需求場景為至少一個(gè)統(tǒng)計(jì)需求場景中的任意一個(gè)統(tǒng)計(jì)需求場景,根據(jù)目標(biāo)表結(jié)構(gòu)與統(tǒng)計(jì)模型,對目標(biāo)統(tǒng)計(jì)需求場景的統(tǒng)計(jì)目標(biāo)進(jìn)行統(tǒng)計(jì)。該過程中,通過抽象歸類,將統(tǒng)計(jì)方式相同的至少一個(gè)統(tǒng)計(jì)需求場景歸類為一類統(tǒng)計(jì)場景,僅針對該統(tǒng)計(jì)場景訓(xùn)練統(tǒng)計(jì)模型,并基于該統(tǒng)計(jì)模型進(jìn)行數(shù)據(jù)統(tǒng)計(jì)以滿足用戶對海量數(shù)據(jù)的統(tǒng)計(jì)需求。同時(shí),通過抽象歸類是抽象出不同統(tǒng)計(jì)需求場景的共性,訓(xùn)練統(tǒng)計(jì)模型時(shí)將公用的處理邏輯封裝,對外提供統(tǒng)一的調(diào)用,能夠很大程度上減少重復(fù)開發(fā)、提高訓(xùn)練模型的可維護(hù)性和通用性??蛇x的,在本申請一個(gè)示例中,所述根據(jù)所述目標(biāo)表結(jié)構(gòu)與統(tǒng)計(jì)模型,對所述目標(biāo)統(tǒng)計(jì)需求場景的所述統(tǒng)計(jì)目標(biāo)進(jìn)行統(tǒng)計(jì)之前,還對所述目標(biāo)統(tǒng)計(jì)需求場景配置統(tǒng)計(jì)任務(wù)。具體的,目標(biāo)統(tǒng)計(jì)需求場景的目標(biāo)表結(jié)構(gòu),該目標(biāo)表結(jié)構(gòu)用于指示目標(biāo)統(tǒng)計(jì)需求場景的統(tǒng)計(jì)目標(biāo),即需要統(tǒng)計(jì)什么。而如何統(tǒng)計(jì),即要怎樣統(tǒng)計(jì),可通過配置統(tǒng)計(jì)任務(wù)實(shí)現(xiàn)。例如,通過配置任務(wù),配置目標(biāo)統(tǒng)計(jì)需求場景的即時(shí)統(tǒng)計(jì)任務(wù),根據(jù)所述目標(biāo)表結(jié)構(gòu)與統(tǒng)計(jì)模型,對所述目標(biāo)統(tǒng)計(jì)需求場景的所述統(tǒng)計(jì)目標(biāo)進(jìn)行即時(shí)統(tǒng)計(jì);再如,通過配置任務(wù),配置目標(biāo)統(tǒng)計(jì)需求場景的定時(shí)統(tǒng)計(jì)任務(wù),根據(jù)所述目標(biāo)表結(jié)構(gòu)與統(tǒng)計(jì)模型,對所述目標(biāo)統(tǒng)計(jì)需求場景的所述統(tǒng)計(jì)目標(biāo)進(jìn)行定時(shí)統(tǒng)計(jì)??蛇x的,在本申請一個(gè)示例中,所述至少一個(gè)統(tǒng)計(jì)需求場景包括第一統(tǒng)計(jì)需求場景和第二統(tǒng)計(jì)需求場景,所述第一統(tǒng)計(jì)需求場景對應(yīng)的表結(jié)構(gòu)和所述第二統(tǒng)計(jì)需求場景對應(yīng)的表結(jié)構(gòu)不同。具體的,屬于同一類統(tǒng)計(jì)場景的至少一個(gè)統(tǒng)計(jì)需求場景中,各個(gè)統(tǒng)計(jì)需求場景的表結(jié)構(gòu)不同。也就是說,屬于同一類統(tǒng)計(jì)場景的至少一個(gè)統(tǒng)計(jì)需求場景都采用相同的統(tǒng)計(jì)模型,指示統(tǒng)計(jì)過程中針對不同的統(tǒng)計(jì)需求場景,設(shè)置的表結(jié)構(gòu)不一樣。圖2為本申請數(shù)據(jù)統(tǒng)計(jì)方法所適用的處理過程示意圖。請參照圖2,本申請實(shí)施例中,數(shù)據(jù)統(tǒng)計(jì)包括對數(shù)據(jù)源進(jìn)行數(shù)據(jù)采集、數(shù)據(jù)存儲、數(shù)據(jù)處理與數(shù)據(jù)展示、生成報(bào)表等環(huán)節(jié)。圖3為本申請數(shù)據(jù)統(tǒng)計(jì)方法所適用的數(shù)據(jù)統(tǒng)計(jì)系統(tǒng)的架構(gòu)示意圖。請參照圖3,本申請實(shí)施例中,數(shù)據(jù)統(tǒng)計(jì)系統(tǒng)是一套按需求自定義配置的服務(wù),是基于hbase(如圖中的的持久化)、流式處理(storm)、hive、impala、搜索引擎解決方案(elasticsearch)、kafka等開源框架之上的集成服務(wù)。該數(shù)據(jù)系統(tǒng)的具有(1)、基于自定義配置和統(tǒng)計(jì)模型,與業(yè)務(wù)系統(tǒng)解耦;(2)、支持實(shí)時(shí)統(tǒng)計(jì)和定時(shí)統(tǒng)計(jì)需求;(3)、具有高可擴(kuò)展性,即:當(dāng)數(shù)據(jù)量增加時(shí),可以通過增加節(jié)點(diǎn)進(jìn)行橫向擴(kuò)容;(4)、插件式服務(wù),各子服務(wù)之前相互解耦,各子服務(wù)內(nèi)部的實(shí)現(xiàn)方案可以隨時(shí)迭代替換。請參照圖3,來自web端采集模塊、手機(jī)端采集模塊和服務(wù)端采集模塊的數(shù)據(jù)經(jīng)過數(shù)據(jù)采集后,進(jìn)行數(shù)據(jù)清洗,然后依次進(jìn)行storm流式處理、hbase持久化、以及hive/mapreduce等處理,最后可通mysql/搜索引擎解決方案(elasticsearch)進(jìn)行展示,如web報(bào)表展示引擎、數(shù)據(jù)導(dǎo)出服務(wù)、監(jiān)控告警服務(wù)以及系統(tǒng)監(jiān)控模塊進(jìn)行展出。另外,該數(shù)據(jù)統(tǒng)計(jì)系統(tǒng)還包括權(quán)限認(rèn)證服務(wù),用于對不同的用戶設(shè)置不同的權(quán)限;任務(wù)配置模塊,用于配置統(tǒng)計(jì)任務(wù);系統(tǒng)配置模塊,用于對數(shù)據(jù)統(tǒng)計(jì)系統(tǒng)進(jìn)行配置。下面,結(jié)合圖3,以統(tǒng)計(jì)每天各地區(qū)的訂單金額為例,對上述的數(shù)據(jù)統(tǒng)計(jì)系統(tǒng)處理數(shù)據(jù)的流程進(jìn)行介紹。首先,創(chuàng)建元數(shù)據(jù)表,即表結(jié)構(gòu)。具體的,在數(shù)據(jù)統(tǒng)計(jì)系統(tǒng)的管理界面創(chuàng)建出表結(jié)構(gòu),該表結(jié)構(gòu)例如是訂單表,通過表映射機(jī)制將表結(jié)構(gòu)自動同步到數(shù)據(jù)統(tǒng)計(jì)系統(tǒng)中所有的數(shù)據(jù)流環(huán)節(jié)中。該過程中,在管理界面創(chuàng)建表結(jié)構(gòu),可以理解為定義了一個(gè)基于xml規(guī)范的表結(jié)構(gòu)信息,在管理界面創(chuàng)建完成后,數(shù)據(jù)統(tǒng)計(jì)系統(tǒng)會自動更新配置到其他子服務(wù)模塊,并且也會在hbase和hive中同時(shí)創(chuàng)建出與值對應(yīng)的表結(jié)構(gòu),即訂單表。其次,數(shù)據(jù)采集。具體的,調(diào)用方通過工具包,如客戶端udk(clientudk)工具包,發(fā)送訂單數(shù)據(jù)到服務(wù)端接口,storm流式處理模塊解析表結(jié)構(gòu),并存儲到hbae持久化模塊對應(yīng)的表結(jié)構(gòu)中。其中clientudk工具包提供了表結(jié)構(gòu)的增加、修改、刪除定相應(yīng)的操作方法,只需要指定表結(jié)構(gòu)的名稱和參數(shù),就能直接修改hbase中的元數(shù)據(jù)。再次,配置統(tǒng)計(jì)任務(wù)。具體的,統(tǒng)計(jì)任務(wù)中包含了表結(jié)構(gòu)、結(jié)果輸出表、統(tǒng)計(jì)描述信息、統(tǒng)計(jì)周期、統(tǒng)計(jì)維度、日期以及統(tǒng)計(jì)策略等信息。接著,定時(shí)統(tǒng)計(jì)。統(tǒng)計(jì)任務(wù)根據(jù)任務(wù)類型,從統(tǒng)計(jì)模型中選擇相應(yīng)的統(tǒng)計(jì)模型,hive以及impala支持類sql的查詢語言,可將hbase中的數(shù)據(jù)映射為關(guān)系數(shù)據(jù)庫中的數(shù)據(jù),大大簡化了對hadoop分布式文件系統(tǒng)(hadoopdistributedfilesystem,hdfs)上數(shù)據(jù)處理的難度。數(shù)據(jù)統(tǒng)計(jì)系統(tǒng)自動加載任務(wù)信息,并由quartz自動調(diào)用統(tǒng)計(jì)job的執(zhí)行。統(tǒng)計(jì)job將任務(wù)信息轉(zhuǎn)化成與hive、impala相對應(yīng)的類sql語言,hive/impala執(zhí)行結(jié)束后再將統(tǒng)計(jì)結(jié)果存儲到hbase中。接著,即時(shí)統(tǒng)計(jì)。數(shù)據(jù)統(tǒng)計(jì)系統(tǒng)中的即時(shí)統(tǒng)計(jì)是根據(jù)用戶定義的計(jì)算規(guī)則對元數(shù)據(jù)更新的操作,操作事件除了對元數(shù)據(jù)表的增加、修改和刪除操作之外,還包括一類單獨(dú)的運(yùn)算事件,可以由調(diào)用方提供運(yùn)算規(guī)則,由storm解析運(yùn)算規(guī)則并修改hbase中的數(shù)據(jù)。最后,數(shù)據(jù)展現(xiàn)。本申請實(shí)施例中,數(shù)據(jù)統(tǒng)計(jì)系統(tǒng)中提供了元數(shù)據(jù)和統(tǒng)計(jì)結(jié)果的查詢服務(wù),它支持mysql和elasticsearch兩種方案,可根據(jù)需要選擇。默認(rèn)使用elasticsearch,hbase中的元數(shù)據(jù)和統(tǒng)計(jì)結(jié)果數(shù)據(jù)會自動同步到搜索引擎解決方案(elasticsearch,es)當(dāng)中,由es對外提供查詢服務(wù)。接下來,對數(shù)據(jù)統(tǒng)計(jì)系統(tǒng)的具體實(shí)現(xiàn)進(jìn)行詳細(xì)講解。首先、數(shù)據(jù)表映射機(jī)制。具體的,數(shù)據(jù)統(tǒng)計(jì)系統(tǒng)是一套與調(diào)用方業(yè)務(wù)邏輯完全解耦的系統(tǒng),它在為調(diào)用方提供數(shù)據(jù)統(tǒng)計(jì)功能之前,首先需要的一套統(tǒng)計(jì)規(guī)則。數(shù)據(jù)統(tǒng)計(jì)系統(tǒng)參考數(shù)據(jù)庫的設(shè)計(jì)思想,設(shè)置表結(jié)構(gòu),表結(jié)構(gòu)是數(shù)據(jù)存儲的單元。數(shù)據(jù)統(tǒng)計(jì)系統(tǒng)中所有類型的元數(shù)據(jù)和統(tǒng)計(jì)數(shù)據(jù)都要存儲到對應(yīng)的表中。數(shù)據(jù)統(tǒng)計(jì)系統(tǒng)中的表包含兩種:實(shí)表和虛表。實(shí)表是必須手動去創(chuàng)建的表,而虛表則是程序自動創(chuàng)建的表。實(shí)表中存儲的是對調(diào)用方有實(shí)際意義的數(shù)據(jù),如訂單表、商戶表、用戶表等,針對于實(shí)表可以有不同的統(tǒng)計(jì)計(jì)劃。而虛表則一般都是為了應(yīng)對一些簡單的統(tǒng)計(jì)需求,為簡化用戶操作,而程序自動創(chuàng)建出的表。數(shù)據(jù)統(tǒng)計(jì)系統(tǒng)中的數(shù)據(jù)表映射是指管理員在web配置界面創(chuàng)建表結(jié)構(gòu),自動將表結(jié)構(gòu)同步到數(shù)據(jù)統(tǒng)計(jì)系統(tǒng)中的各個(gè)環(huán)節(jié)。表映射的目的是為了實(shí)現(xiàn)相同的配置信息在各個(gè)數(shù)據(jù)流轉(zhuǎn)環(huán)節(jié)以不同的形態(tài)的存在,從而讓各個(gè)環(huán)節(jié)之間的數(shù)據(jù)交互成為可能。例如:軟件開關(guān)工具包(softwaredevelopmentkit,sdk)是為調(diào)用方提供的工具包,工具包中需要根據(jù)用戶創(chuàng)建的表結(jié)構(gòu)來檢查錄入數(shù)據(jù)的合法性。storm也會需要相同的數(shù)據(jù),而hbase、hive中本身就有表結(jié)構(gòu)的概念,數(shù)據(jù)統(tǒng)計(jì)系統(tǒng)會自動根據(jù)用戶的表結(jié)構(gòu)配置,將表結(jié)構(gòu)數(shù)據(jù)同步到sdk工具包和storm服務(wù)中,并且同時(shí)在hbase和hive中創(chuàng)建出相對應(yīng)的表。具體的,可參見圖4,圖4為本申請數(shù)據(jù)統(tǒng)計(jì)方法中所適用的表映射示意圖。請參照圖4,表映射模塊根據(jù)表配置信息,創(chuàng)建hbase表和hive表。數(shù)據(jù)統(tǒng)計(jì)系統(tǒng)根據(jù)用戶定義創(chuàng)建出hbase和hive表結(jié)構(gòu),由于hbase中只能存儲簡單的字符類型,數(shù)據(jù)統(tǒng)計(jì)系統(tǒng)在對數(shù)據(jù)查詢和修改之前會做統(tǒng)一的封裝,將hbase實(shí)際存儲的字符類型轉(zhuǎn)化成用戶定義的參數(shù)類型。對于上層應(yīng)用來說對hbase和hive中表的操作都是完全按照用戶定義來操作表的。其次,統(tǒng)一配置任務(wù)。具體的,數(shù)據(jù)統(tǒng)計(jì)系統(tǒng)的整個(gè)配置管理服務(wù)包含三個(gè)部分:zookeeper集群、數(shù)據(jù)統(tǒng)計(jì)系統(tǒng)web端管理服務(wù)和其他分布式應(yīng)用服務(wù)。通過在web端新增或修改配置文件,同時(shí)將配置信息上傳到zookeeper的永久節(jié)點(diǎn),其他分布式應(yīng)用服務(wù)監(jiān)聽響應(yīng)配置節(jié)點(diǎn),當(dāng)接收到配置變化通知時(shí)再去zookeeper上獲取最新的配置信息。另外,web管理服務(wù)有配置文件版本回溯機(jī)制,便于操作的回退。因此,統(tǒng)一配置的優(yōu)點(diǎn)在于,第一、配置發(fā)布統(tǒng)一化,降低運(yùn)維成本;第二、配置下發(fā)后及時(shí)更新,配置熱加載。再次,數(shù)據(jù)采集。數(shù)據(jù)統(tǒng)計(jì)系統(tǒng)將每一條元數(shù)據(jù)的發(fā)送定義為一個(gè)事件,這個(gè)事件包含了事件的類型、相關(guān)表、事件名稱、事件內(nèi)容、發(fā)生時(shí)間等信息。數(shù)據(jù)統(tǒng)計(jì)系統(tǒng)中的事件目前包含了四種類型:add_event:表數(shù)據(jù)增加事件,是最常用的一種即元數(shù)據(jù)入庫事件。upd_event:表數(shù)據(jù)修改事件,元數(shù)據(jù)修改事件。del_event:表數(shù)據(jù)刪除事件,元數(shù)據(jù)刪除事件。calc_event:表數(shù)據(jù)計(jì)算修改事件,calc_event是在upd_event事件之上做了額外的自定義的擴(kuò)展。數(shù)據(jù)統(tǒng)計(jì)中有很多的計(jì)算方式是基于原始數(shù)據(jù)的,即在原始數(shù)據(jù)上進(jìn)行修改從而得到新的數(shù)據(jù),如計(jì)數(shù)操作是在原來的基礎(chǔ)上+1。calc_event是可以由調(diào)用方自定義計(jì)算公式,而數(shù)據(jù)統(tǒng)計(jì)系統(tǒng)則按照調(diào)用方的計(jì)算公式來處理。對于元數(shù)據(jù)的采集,業(yè)內(nèi)比較通用的做法是基于flume、fluentd、scribe等開源框架,而這一類的開源框架往往基于日志文件的采集方式,這種數(shù)據(jù)采集方式優(yōu)點(diǎn)是與業(yè)務(wù)完全解耦,數(shù)據(jù)采集流程也不會影響業(yè)務(wù)自身的正常運(yùn)行。但其實(shí)這種方案也有明顯的弊端,因?yàn)榇蠖嘞到y(tǒng)日志中的數(shù)據(jù)相對雜亂,其輸出內(nèi)容完全由業(yè)務(wù)方?jīng)Q定,對這種元數(shù)據(jù)其數(shù)據(jù)清洗和處理難度較高。同時(shí)這種實(shí)現(xiàn)方式需要在每個(gè)調(diào)用方服務(wù)器上部署相應(yīng)的采集模塊,其管理維護(hù)成本也非常高。數(shù)據(jù)統(tǒng)計(jì)系統(tǒng)中元數(shù)據(jù)要存儲到對應(yīng)的表結(jié)構(gòu)中去,元數(shù)據(jù)的格式與表結(jié)構(gòu)是對應(yīng)的。數(shù)據(jù)統(tǒng)計(jì)系統(tǒng)采取的是一種基于api的采集機(jī)制。server端完全由thrift接口來提供元數(shù)據(jù)的采集服務(wù)。可以說相對于flume/fluentd那種主動獲取的采集方式,數(shù)據(jù)統(tǒng)計(jì)系統(tǒng)使用的是被動接收的數(shù)據(jù)獲取方式,即“調(diào)用方想統(tǒng)計(jì)什么數(shù)據(jù),就傳什么數(shù)據(jù)過來”,另外,數(shù)據(jù)統(tǒng)計(jì)系統(tǒng)對于元數(shù)據(jù)的采取強(qiáng)驗(yàn)證處理,對于不符合表結(jié)構(gòu)規(guī)則的數(shù)據(jù)則全部過濾掉。thrift是apache下的一個(gè)子項(xiàng)目,最早是臉書(facebook)的項(xiàng)目,具有以下特征:第一、擁有自己的跨機(jī)器的通信框架,并提供一套庫。第二、是一個(gè)代碼生成器,按照它的規(guī)則,可以生成多種編程語言的通訊過程代碼。第三、提供多語言的編譯功能,并提供多種服務(wù)器工作模式;用戶通過thrift的idl(接口定義語言)來描述接口函數(shù)及數(shù)據(jù)類型,然后通過thrift的編譯環(huán)境生成各種語言類型的接口文件,可以根據(jù)自己的需要采用不同的語言開發(fā)客戶端代碼和服務(wù)器端代碼。thrift簡化了不同語言間基于socket的通訊流程,提供阻塞、非阻塞、單線程和多線程的模式運(yùn)行在服務(wù)器上,大大提高了程序的通用性。本申請實(shí)例的數(shù)據(jù)統(tǒng)計(jì)系統(tǒng)基于thrift的接口方案充分考慮不同調(diào)用方的語言環(huán)境,對調(diào)用方提供相應(yīng)語言的sdk工具包,簡化調(diào)用復(fù)雜度。元數(shù)據(jù)存儲這種應(yīng)用場景數(shù)據(jù)量極大、要求低延遲、此外對消息的處理順序和處理可靠性有較高的要求。storm是一個(gè)開源分布式實(shí)時(shí)計(jì)算系統(tǒng),可以簡單、可靠的處理大量數(shù)據(jù)流。storm支持水平擴(kuò)展,具有高容錯(cuò)性,保證每個(gè)消息都會得到處理。storm是一套流式處理框架,它包含了nimbus和supervisor兩種服務(wù)節(jié)點(diǎn),nimbus負(fù)責(zé)任務(wù)的分配和集群管理,而supervisor則負(fù)責(zé)了具體的任務(wù)執(zhí)行,supervisor中包含了若干個(gè)worker進(jìn)程去處理具體的任務(wù)。storm一般用于處理在線及時(shí)流數(shù)據(jù),它把每一條消息定義為一個(gè)tuple原語,連續(xù)的多個(gè)tuble原語即為stream(流)。storm有三種抽象類型:spout、螺栓(bolt)以及拓?fù)?topology),spout是計(jì)算流的來源。通常可以從各種消息隊(duì)列中獲取數(shù)據(jù)。spout即為數(shù)據(jù)源,可以從各種消息隊(duì)列中獲取數(shù)據(jù),而bolt則負(fù)責(zé)具體的邏輯,spout可以根據(jù)時(shí)間類型分發(fā)消息到不同的bolt處理。topology可以理解為某一項(xiàng)特定的處理任務(wù),是由很多spout和bolt組成的網(wǎng)絡(luò),它規(guī)定了spout如何讀取實(shí)時(shí)流數(shù)據(jù),并交由哪一個(gè)或幾個(gè)bolt去處理。storm可以靈活的設(shè)置每一個(gè)spout和bolt的并行度,以多進(jìn)程的方式去處理批量任務(wù),大大提高了任務(wù)的處理效率。數(shù)據(jù)統(tǒng)計(jì)系統(tǒng)基于storm的流式處理方案之上,將事件類型與bolt進(jìn)行關(guān)聯(lián),不同的事件類型交由不同的bolt處理,bolt將結(jié)果一一處理存儲到hbase中去。數(shù)據(jù)統(tǒng)計(jì)系統(tǒng)中除了支持固定元數(shù)據(jù)采集之外,還支持算式運(yùn)算,對應(yīng)的處理邏輯有calcbolt實(shí)現(xiàn)。調(diào)用方可自己定義計(jì)算表達(dá)式,calcbolt根據(jù)用戶定義表達(dá)式計(jì)算出結(jié)果再保存到hbase中去。自定義流式計(jì)算可以實(shí)現(xiàn)大部分的及時(shí)數(shù)據(jù)統(tǒng)計(jì)需求,比如統(tǒng)計(jì)每天實(shí)時(shí)訂單總金額,首先在cuberweb管理界面配置及時(shí)任務(wù)信息,程序在每天0點(diǎn)創(chuàng)建出對應(yīng)hbase指定表中的數(shù)據(jù)項(xiàng),每筆訂單觸發(fā)calc_event事件,而運(yùn)算表達(dá)式是hbase表中的當(dāng)前值加上該筆訂單金額。calcbolt通過aviator表達(dá)式引擎解析出用戶自定義算法,計(jì)算完成后再將結(jié)果保存到hbase中,從而實(shí)現(xiàn)實(shí)時(shí)統(tǒng)計(jì)。除了這種簡單的累加場景之外,aviator支持更加復(fù)雜多樣的計(jì)算方法滿足用戶的各種需求。接著,數(shù)據(jù)存儲。本申請實(shí)例中,元數(shù)據(jù)寫入的場景的特點(diǎn)是:第一、海量;第二、即時(shí)性要求高;第三、便于統(tǒng)計(jì);第四、對數(shù)據(jù)丟失容忍度低。數(shù)據(jù)統(tǒng)計(jì)系統(tǒng)基于hbase的實(shí)現(xiàn)數(shù)據(jù)重傳。hbase是一個(gè)構(gòu)建在hdfs上的分布式列存儲系統(tǒng),基于googlebigtable模型開發(fā),是apachehadoop生態(tài)系統(tǒng)中的重要一員,主要用于海量結(jié)構(gòu)化數(shù)據(jù)存儲。其中,hbase具有如下特點(diǎn):第一、大,一個(gè)表可以有數(shù)十億行,上百萬列;第二、無模式,每行都有一個(gè)可排序的主鍵和任意多的列,列可以根據(jù)需要動態(tài)的增加,同一張表中不同的行可以有截然不同的列;第三、面向列,面向列(族)的存儲和列(族)獨(dú)立檢索;第四、稀疏,空(null)列并不占用存儲空間,表可以設(shè)計(jì)的非常稀疏;第五、數(shù)據(jù)多版本:每個(gè)單元中的數(shù)據(jù)可以有多個(gè)版本,默認(rèn)情況下版本號自動分配,是單元格插入時(shí)的時(shí)間戳。在hbase中包含hmaster和hreginserver兩種節(jié)點(diǎn),使用zookeeper作為分布式協(xié)調(diào)服務(wù),hbase是運(yùn)行在hadoop上的nosql數(shù)據(jù)庫,數(shù)據(jù)由hdfs做了數(shù)據(jù)冗余,具有高可靠性。hregionserver內(nèi)部管理一系列hregion對象,每個(gè)hregion對應(yīng)表格(table)中的一個(gè)范圍(region),hregion由多個(gè)hstore組成。每個(gè)hstore對應(yīng)了table中的一個(gè)列族(columnfamily)的存儲。因此,每個(gè)columnfamily其實(shí)就是一個(gè)集中的存儲單元,具備共同io特性的column放在一個(gè)columnfamily中。hstore存儲是hbase存儲的核心,由兩部分組成,一部分是memstore,一部分是storefile。memstore是sortedmemorybuffer,用戶寫入的數(shù)據(jù)首先會放入memstore,當(dāng)memstore滿了以后會flush成一個(gè)storefile(底層實(shí)現(xiàn)是hfile)。hbase基于預(yù)寫日志系統(tǒng)(write-aheadlogging,wal)機(jī)制進(jìn)行數(shù)據(jù)寫入,wal是一種高效的日志算法,基本原理是在數(shù)據(jù)寫入之前首先順序?qū)懭肴罩?,然后再寫入緩存,等到緩存寫滿之后統(tǒng)一落盤。wal機(jī)制之所以能夠提升寫性能,是因?yàn)閣al將一次隨機(jī)寫轉(zhuǎn)化為了一次順序?qū)懠右淮蝺?nèi)存寫。提升寫性能的同時(shí),wal可以保證數(shù)據(jù)的可靠性,即在任何情況下數(shù)據(jù)不丟失。假如一次寫入完成之后發(fā)生了宕機(jī),即使所有緩存中的數(shù)據(jù)丟失,也可以通過恢復(fù)日志還原出丟失的數(shù)據(jù)。hbase的wcl機(jī)制保證了其在高并發(fā)讀寫場景下的性能。傳統(tǒng)的行式數(shù)據(jù)庫,是按照行存儲的,維護(hù)大量的索引和物化視圖無論是在時(shí)間(處理)還是空間(存儲)方面成本都很高。而列式數(shù)據(jù)庫恰恰相反,列式數(shù)據(jù)庫的數(shù)據(jù)是按照列存儲,每一列單獨(dú)存放,數(shù)據(jù)即是索引。只訪問查詢涉及的列,大大降低了系統(tǒng)i/o,每一列由一個(gè)線來處理,而且由于數(shù)據(jù)類型一致,數(shù)據(jù)特征相似,極大方便壓縮。行式數(shù)據(jù)庫擅長隨機(jī)讀操作,列式數(shù)據(jù)庫則更適合大批量數(shù)據(jù)量寫入和查詢,非常適合大數(shù)據(jù)統(tǒng)計(jì)系統(tǒng)的應(yīng)用場景。通過上述存儲方式,使得所有的rowkey、列、列族都有match屬性,match屬性是行名、列名、列族名的簡寫,也是存儲到hbase中的數(shù)據(jù),可以極大的降低hbase中的資源占用。同時(shí),列族與列的劃分由調(diào)用方定義,便于調(diào)用方將具有相同io特性的列放在同一列族,從而提高讀寫效率。接著,定時(shí)統(tǒng)計(jì)。定時(shí)任務(wù)是由系統(tǒng)加載定時(shí)任務(wù)信息,然后由quartz調(diào)用統(tǒng)計(jì)job的執(zhí)行,統(tǒng)計(jì)job會將任務(wù)配置信息轉(zhuǎn)化成類sql語言,交由hive和impala來處理。在描述數(shù)據(jù)統(tǒng)計(jì)系統(tǒng)的定時(shí)統(tǒng)計(jì)之前,首先介紹下mapreduce和hive。mapreduce是hadoop的核心組件之一,hadoop的另外一個(gè)核心組件是hdfs,hdfs是分布式存儲引擎,而mapreduce就是建立在hdfs上的批量數(shù)據(jù)處理引擎。mapreduce采用"分而治之"的思想,把對大規(guī)模數(shù)據(jù)集的操作,分發(fā)給一個(gè)主節(jié)點(diǎn)管理下的各個(gè)分節(jié)點(diǎn)共同完成,然后通過整合各個(gè)節(jié)點(diǎn)的中間結(jié)果,得到最終結(jié)果。簡單地說,mapreduce就是"任務(wù)的分解與結(jié)果的匯總"。在hadoop中,用于執(zhí)行mapreduce任務(wù)的機(jī)器角色有兩個(gè):一個(gè)是jobtracker;另一個(gè)是tasktracker,jobtracker是用于調(diào)度工作的,tasktracker是用于執(zhí)行工作的。一個(gè)hadoop集群中只有一臺jobtracker。在hadoop中,每個(gè)mapreduce任務(wù)都被初始化為一個(gè)job,每個(gè)job又可以分為兩種階段:map階段和reduce階段。這兩個(gè)階段分別用兩個(gè)函數(shù)表示,即map函數(shù)和reduce函數(shù)。map函數(shù)接收一個(gè)<key,value>形式的輸入,然后同樣產(chǎn)生一個(gè)<key,value>形式的中間輸出,hadoop函數(shù)接收一個(gè)如<key,(listofvalues)>形式的輸入,然后對這個(gè)value集合進(jìn)行處理,每個(gè)reduce產(chǎn)生0或1個(gè)輸出,reduce的輸出也是<key,value>形式的。在分布式計(jì)算中,mapreduce框架負(fù)責(zé)處理了并行編程中分布式存儲、工作調(diào)度、負(fù)載均衡、容錯(cuò)均衡、容錯(cuò)處理以及網(wǎng)絡(luò)通信等復(fù)雜問題,把處理過程高度抽象為兩個(gè)函數(shù)map和reduce,map負(fù)責(zé)把任務(wù)分解成多個(gè)任務(wù),reduce負(fù)責(zé)把分解后多任務(wù)處理的結(jié)果匯總起來。hive是基于hadoop的一個(gè)數(shù)據(jù)倉庫工具,可以將結(jié)構(gòu)化的數(shù)據(jù)文件映射為一張數(shù)據(jù)庫表,并提供完整的sql查詢功能,可以將sql語句轉(zhuǎn)換為mapreduce任務(wù)進(jìn)行運(yùn)行。其優(yōu)點(diǎn)是學(xué)習(xí)成本低,可以通過類sql語句快速實(shí)現(xiàn)簡單的mapreduce統(tǒng)計(jì),不必開發(fā)專門的mapreduce應(yīng)用,十分適合數(shù)據(jù)倉庫的統(tǒng)計(jì)分析。hive是一種可以存儲、查詢和分析存儲在hadoop中的大規(guī)模數(shù)據(jù)的機(jī)制。hive定義了簡單的類sql查詢語言,稱為hql,允許熟悉sql的用戶查詢數(shù)據(jù)。同時(shí),該語言也允許熟悉mapreduce開發(fā)者的開發(fā)自定義的mapper和reducer來處理內(nèi)建的mapper和reducer無法完成的復(fù)雜的分析工作。統(tǒng)計(jì)過程中,首先,統(tǒng)計(jì)系統(tǒng)加載定時(shí)任務(wù)信息,由quartz在指定時(shí)刻調(diào)度;然后,任務(wù)解析模塊判斷是否可將任務(wù)信息解析成可被impala或hive可以處理的類sql語句。接著,若可以轉(zhuǎn)化成類sql語句的任務(wù),由impala和hive對hbase元數(shù)據(jù)進(jìn)行統(tǒng)計(jì),并將統(tǒng)計(jì)結(jié)果存儲到hbase結(jié)果表中;若不可轉(zhuǎn)化,則需要有自定義開發(fā)的mr程序統(tǒng)計(jì)執(zhí)行。圖5為本申請數(shù)據(jù)統(tǒng)計(jì)裝置實(shí)施例一的結(jié)構(gòu)示意圖,包括:歸類模塊11,用于將至少一個(gè)統(tǒng)計(jì)需求場景歸類為一類統(tǒng)計(jì)場景,所述至少一個(gè)統(tǒng)計(jì)需求場景中的每個(gè)統(tǒng)計(jì)需求場景的統(tǒng)計(jì)方式相同;訓(xùn)練模塊12,用于針對所述統(tǒng)計(jì)場景訓(xùn)練統(tǒng)計(jì)模型;確定模塊13,用于確定目標(biāo)統(tǒng)計(jì)需求場景的目標(biāo)表結(jié)構(gòu),所述目標(biāo)表結(jié)構(gòu)用于指示所述目標(biāo)統(tǒng)計(jì)需求場景的統(tǒng)計(jì)目標(biāo),所述目標(biāo)統(tǒng)計(jì)需求場景為所述至少一個(gè)統(tǒng)計(jì)需求場景中的任意一個(gè)統(tǒng)計(jì)需求場景;統(tǒng)計(jì)模塊14,用于根據(jù)所述目標(biāo)表結(jié)構(gòu)與統(tǒng)計(jì)模型,對所述目標(biāo)統(tǒng)計(jì)需求場景的所述統(tǒng)計(jì)目標(biāo)進(jìn)行統(tǒng)計(jì)。本申請實(shí)施例提供的數(shù)據(jù)統(tǒng)計(jì)裝置,將至少一個(gè)統(tǒng)計(jì)需求場景歸類為一類統(tǒng)計(jì)場景,至少一個(gè)統(tǒng)計(jì)需求場景中的每個(gè)統(tǒng)計(jì)需求場景的統(tǒng)計(jì)方式相同,針對統(tǒng)計(jì)場景訓(xùn)練統(tǒng)計(jì)模型,確定目標(biāo)統(tǒng)計(jì)需求場景的目標(biāo)表結(jié)構(gòu),目標(biāo)表結(jié)構(gòu)用于指示目標(biāo)統(tǒng)計(jì)需求場景的統(tǒng)計(jì)目標(biāo),目標(biāo)統(tǒng)計(jì)需求場景為至少一個(gè)統(tǒng)計(jì)需求場景中的任意一個(gè)統(tǒng)計(jì)需求場景,根據(jù)目標(biāo)表結(jié)構(gòu)與統(tǒng)計(jì)模型,對目標(biāo)統(tǒng)計(jì)需求場景的統(tǒng)計(jì)目標(biāo)進(jìn)行統(tǒng)計(jì)。該過程中,通過抽象歸類,將統(tǒng)計(jì)方式相同的至少一個(gè)統(tǒng)計(jì)需求場景歸類為一類統(tǒng)計(jì)場景,僅針對該統(tǒng)計(jì)場景訓(xùn)練統(tǒng)計(jì)模型,并基于該統(tǒng)計(jì)模型進(jìn)行數(shù)據(jù)統(tǒng)計(jì)以滿足用戶對海量數(shù)據(jù)的統(tǒng)計(jì)需求。同時(shí),通過抽象歸類是抽象出不同統(tǒng)計(jì)需求場景的共性,訓(xùn)練統(tǒng)計(jì)模型時(shí)將公用的處理邏輯封裝,對外提供統(tǒng)一的調(diào)用,能夠很大程度上減少重復(fù)開發(fā)、提高訓(xùn)練模型的可維護(hù)性和通用性圖6為本申請數(shù)據(jù)統(tǒng)計(jì)裝置實(shí)施例二的結(jié)構(gòu)示意圖,請參照圖6,本申請實(shí)施例提供的數(shù)據(jù)統(tǒng)計(jì)裝置,在上述圖5的基礎(chǔ)上,進(jìn)一步的,還包括:配置模塊15,用于在所述統(tǒng)計(jì)模塊14根據(jù)所述目標(biāo)表結(jié)構(gòu)與統(tǒng)計(jì)模型,對所述目標(biāo)統(tǒng)計(jì)需求場景的所述統(tǒng)計(jì)目標(biāo)進(jìn)行統(tǒng)計(jì)之前,對所述目標(biāo)統(tǒng)計(jì)需求場景配置統(tǒng)計(jì)任務(wù)??蛇x的,在本申請一實(shí)施例中,所述統(tǒng)計(jì)任務(wù)指示所述目標(biāo)統(tǒng)計(jì)需求場景的即時(shí)統(tǒng)計(jì)任務(wù),所述統(tǒng)計(jì)模塊14,具體用于根據(jù)所述目標(biāo)表結(jié)構(gòu)與統(tǒng)計(jì)模型,對所述目標(biāo)統(tǒng)計(jì)需求場景的所述統(tǒng)計(jì)目標(biāo)進(jìn)行即時(shí)統(tǒng)計(jì)??蛇x的,在本申請一實(shí)施例中,所述統(tǒng)計(jì)任務(wù)指示所述目標(biāo)統(tǒng)計(jì)需求場景的定時(shí)統(tǒng)計(jì)任務(wù),所述統(tǒng)計(jì)模塊14,具體用于根據(jù)所述目標(biāo)表結(jié)構(gòu)與統(tǒng)計(jì)模型,對所述目標(biāo)統(tǒng)計(jì)需求場景的所述統(tǒng)計(jì)目標(biāo)進(jìn)行定時(shí)統(tǒng)計(jì)??蛇x的,在本申請一實(shí)施例中,所述至少一個(gè)統(tǒng)計(jì)需求場景包括第一統(tǒng)計(jì)需求場景和第二統(tǒng)計(jì)需求場景,所述第一統(tǒng)計(jì)需求場景對應(yīng)的表結(jié)構(gòu)和所述第二統(tǒng)計(jì)需求場景對應(yīng)的表結(jié)構(gòu)不同。本領(lǐng)域普通技術(shù)人員可以理解:實(shí)現(xiàn)上述各方法實(shí)施例的全部或部分步驟可以通過程序指令相關(guān)的硬件來完成。前述的程序可以存儲于一計(jì)算機(jī)可讀取存儲介質(zhì)中。該程序在執(zhí)行時(shí),執(zhí)行包括上述各方法實(shí)施例的步驟;而前述的存儲介質(zhì)包括:rom、ram、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。當(dāng)前第1頁12當(dāng)前第1頁12