在線(xiàn)系統(tǒng)與大數(shù)據(jù)平臺(tái)處 理線(xiàn)下統(tǒng)計(jì)分析將會(huì)長(zhǎng)期并存。在運(yùn)個(gè)兩個(gè)系統(tǒng)中,需要一種數(shù)據(jù)抽取工具擔(dān)任橋梁的角 色,負(fù)責(zé)數(shù)據(jù)的傳遞。
[0045] 在本實(shí)施例中,該數(shù)據(jù)抽取工具可W包括Sqoop工具、Kettle工具、Flume工具或 Chuwa工具。
[0046] 本實(shí)施例可W選用Sqoop工具,其中,Sqoop工具是一款開(kāi)源的工具,主要用于在 hbase與傳統(tǒng)的關(guān)系型數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)(mysql、oracle等)之間進(jìn)行數(shù)據(jù)的傳遞。
[0047] 步驟202:創(chuàng)建數(shù)據(jù)抽取記錄表,設(shè)置目標(biāo)條件。
[0048] 在某些場(chǎng)景下,數(shù)據(jù)量的情況是一項(xiàng)重要指標(biāo)。在時(shí)間維度上有每天、每周、每月、 每年的數(shù)據(jù)增量;在表維度上有每張表的數(shù)據(jù)增量,整體需求體現(xiàn)為所有表的數(shù)據(jù)總量、所 有表每天的數(shù)據(jù)增量、所有表每月的數(shù)據(jù)增量、每張表每天的數(shù)據(jù)增量、每張表每月的數(shù)據(jù) 增量......
[0049] 在本實(shí)施例中,為了保證在對(duì)大數(shù)據(jù)平臺(tái)中的數(shù)據(jù)進(jìn)行統(tǒng)計(jì)時(shí),可W利用該數(shù)據(jù) 抽取記錄表進(jìn)行統(tǒng)計(jì),可W對(duì)Sqoop工具的源碼進(jìn)行改造,W使該Sqoop工具在執(zhí)行每次的 數(shù)據(jù)抽取任務(wù)時(shí),可W將該抽取到的數(shù)據(jù)情況記錄到一張化ase表中,運(yùn)張表稱(chēng)為數(shù)據(jù)抽取 記錄表,該數(shù)據(jù)抽取記錄表中記錄所有抽取到大數(shù)據(jù)平臺(tái)中數(shù)據(jù)表的數(shù)據(jù)量情況。
[0050] 為了滿(mǎn)足數(shù)據(jù)抽取記錄表在表維度和時(shí)間維度上對(duì)數(shù)據(jù)量情況的需求,需要對(duì)數(shù) 據(jù)抽取記錄表進(jìn)行rowkey的設(shè)計(jì),才能滿(mǎn)足對(duì)數(shù)據(jù)量情況按表、按時(shí)間的組合查詢(xún)。其中, 該數(shù)據(jù)抽取記錄表的設(shè)計(jì)可W如下表1所示:
[0化1] 表1:
[0化2]
[0053] 其中,rowk巧中的表名字均是指從關(guān)系型數(shù)據(jù)庫(kù)中抽取的數(shù)據(jù)表的名字。該間隔 符可W是任意的一個(gè)用于對(duì)表名字和時(shí)間起到間隔作用的符號(hào),例如,@、#、Υ、%等。
[0054] 在rowkey項(xiàng)包括{表名字}時(shí)對(duì)應(yīng)的qual if ier中,數(shù)據(jù)量表示該{表名字}的數(shù)據(jù) 總量,利用該項(xiàng)對(duì)某張數(shù)據(jù)表的數(shù)據(jù)總量可W實(shí)現(xiàn)快速查詢(xún)。
[0055] 在rowkey項(xiàng)包括{表名字}間隔符{時(shí)間}時(shí)對(duì)應(yīng)的qualif ier中,數(shù)據(jù)量表示該{表 名字}在該{時(shí)間}內(nèi)產(chǎn)生的數(shù)據(jù)增量。利用該項(xiàng)對(duì)某張數(shù)據(jù)表做scan操作時(shí),即可得到運(yùn)張 表在某段時(shí)間內(nèi)的數(shù)據(jù)增量情況。scan操作中startkey={表名字}間隔符{:開(kāi)始時(shí)間}, Stopk巧={表名字}間隔符{結(jié)束時(shí)間}。
[0056] 在rowkey項(xiàng)包括{時(shí)間}間隔符{表名字}時(shí)對(duì)應(yīng)的qualif ier中,數(shù)據(jù)量表示該{時(shí) 間}內(nèi)至少一個(gè){表名字}對(duì)應(yīng)的數(shù)據(jù)增量。利用該項(xiàng)對(duì)某張數(shù)據(jù)表做scan操作時(shí),即可獲取 到一段時(shí)間內(nèi)所有表數(shù)據(jù)增量的需求。scan操作中startKey={開(kāi)始時(shí)間}間隔符至少一個(gè) {表名字Kstopk巧={結(jié)束時(shí)間}間隔符至少一個(gè){表名字}。
[0057] 在本實(shí)施例中,為了啟動(dòng)該Sqoop工具的抽取操作,可W預(yù)先設(shè)置目標(biāo)條件,W實(shí) 現(xiàn)在滿(mǎn)足該目標(biāo)條件時(shí)觸發(fā)對(duì)Sqoop工具的抽取操作。
[0058] 其中,該目標(biāo)條件可W至少包括W下幾種:到達(dá)設(shè)定時(shí)間段;例如,該設(shè)定時(shí)間段 可W為1天,同時(shí)可W設(shè)置啟動(dòng)抽取操作的具體時(shí)間點(diǎn),例如,每天00:00,在到達(dá)該時(shí)間點(diǎn) 時(shí),啟動(dòng)該抽取操作。和/或,所述至少一個(gè)關(guān)系型數(shù)據(jù)庫(kù)中任意一個(gè)或多個(gè)關(guān)系型數(shù)據(jù)庫(kù) 中具有目標(biāo)數(shù)據(jù)量的增量數(shù)據(jù);例如,該目標(biāo)數(shù)據(jù)量為500MB,當(dāng)監(jiān)測(cè)到某一個(gè)關(guān)系型數(shù)據(jù) 庫(kù)中具有500MB的增量數(shù)據(jù)時(shí),啟動(dòng)該抽取操作。
[0059] 下面W設(shè)定的目標(biāo)條件為到達(dá)每天的00:00時(shí)啟動(dòng)該抽取操作為例,對(duì)本實(shí)施例 進(jìn)行說(shuō)明。
[0060] 步驟203:監(jiān)測(cè)與大數(shù)據(jù)平臺(tái)相連接的至少一個(gè)關(guān)系型數(shù)據(jù)庫(kù)。
[0061] 在一般情況下,企業(yè)的各個(gè)部口可W使用關(guān)系型數(shù)據(jù)庫(kù)為其存儲(chǔ)數(shù)據(jù)或數(shù)據(jù)表, 每一個(gè)部口每天會(huì)產(chǎn)生大量的增量數(shù)據(jù),為了實(shí)現(xiàn)對(duì)各個(gè)關(guān)系型數(shù)據(jù)庫(kù)中大數(shù)據(jù)的處理, 可W將各個(gè)關(guān)系型數(shù)據(jù)庫(kù)中存儲(chǔ)的數(shù)據(jù)抽取到大數(shù)據(jù)平臺(tái)中,W及在后續(xù)過(guò)程中,各個(gè)關(guān) 系型數(shù)據(jù)庫(kù)每產(chǎn)生了增量數(shù)據(jù),則會(huì)將運(yùn)些增量數(shù)據(jù)抽取到大數(shù)據(jù)平臺(tái)中。
[0062] 假設(shè),與大數(shù)據(jù)平臺(tái)相連接的關(guān)系型數(shù)據(jù)庫(kù)包括數(shù)據(jù)庫(kù)1、數(shù)據(jù)庫(kù)2和數(shù)據(jù)庫(kù)3。
[0063] 步驟204:在滿(mǎn)足所述目標(biāo)條件時(shí),將具有增量數(shù)據(jù)的關(guān)系型數(shù)據(jù)庫(kù)中的增量數(shù)據(jù) 抽取到大數(shù)據(jù)平臺(tái)中。
[0064] 在本實(shí)施例中,當(dāng)監(jiān)測(cè)到當(dāng)前的時(shí)間點(diǎn)為00 : 00時(shí),確定此時(shí)的時(shí)間點(diǎn)滿(mǎn)足步驟 202中設(shè)定的目標(biāo)條件,因此啟動(dòng)抽取操作。
[0065] 假設(shè)此時(shí)數(shù)據(jù)庫(kù)1中具有增量數(shù)據(jù),且此時(shí)的時(shí)間點(diǎn)為:2015年1月2日00:00,那么 該Sqoop工具需要將該數(shù)據(jù)庫(kù)1中在2015年1月1日00:00-2015年1月2日00:00之間產(chǎn)生的增 量數(shù)據(jù)抽取到大數(shù)據(jù)平臺(tái)中。
[0066] 具體地,Sqoop工具可W利用時(shí)間戳字段,通過(guò)sql語(yǔ)句,在該數(shù)據(jù)庫(kù)1中查詢(xún)大于 2015年1月1日00:00且小于2015年1月2日00:00的數(shù)據(jù),并將查詢(xún)到的數(shù)據(jù)作為該數(shù)據(jù)庫(kù)1 的增量數(shù)據(jù)抽取到大數(shù)據(jù)平臺(tái)中。
[0067] 步驟205:更新數(shù)據(jù)抽取記錄表。
[0068] 在本實(shí)施例中,可W根據(jù)對(duì)各個(gè)關(guān)系型數(shù)據(jù)庫(kù)中增量數(shù)據(jù)的抽取操作,對(duì)數(shù)據(jù)抽 取記錄表進(jìn)行更新。
[0069] 請(qǐng)參考表2為更新前數(shù)據(jù)抽取記錄表所包括的內(nèi)容:
[0070] 表2: 「00711
[0072] 假設(shè)在數(shù)據(jù)庫(kù)1中抽取到增量數(shù)據(jù)之后,對(duì)數(shù)據(jù)抽取記錄表的更新如下表3所示:
[0073] 表3:
[0074] _
[0075] ~~步驟206:在獲取到統(tǒng)計(jì)指令時(shí),根據(jù)該數(shù)據(jù)抽取記錄表響應(yīng)該統(tǒng)計(jì)指令。
[0076] 例如,該統(tǒng)計(jì)指令用于統(tǒng)計(jì)當(dāng)前大數(shù)據(jù)平臺(tái)中person_info_a數(shù)據(jù)表的數(shù)據(jù)量,根 據(jù)表3可知該person_info_a數(shù)據(jù)表的數(shù)據(jù)量為350MB。
[0077] 再如,該統(tǒng)計(jì)指令用于統(tǒng)計(jì)當(dāng)前大數(shù)據(jù)平臺(tái)中在2015年1月1日96^〇11_1^〇_3和 person_info_b 的數(shù)據(jù)增量,根據(jù)表 3可知該20150101@96'3〇11_;[址0為120113。
[0078] 根據(jù)上述方案,若使用mapreduce任務(wù),每天對(duì)大數(shù)據(jù)平臺(tái)中的所有數(shù)據(jù)進(jìn)行掃描 來(lái)統(tǒng)計(jì)數(shù)據(jù)量的情況,在幾百億數(shù)據(jù)量的情況下,每天要花費(fèi)4-5個(gè)小時(shí)來(lái)統(tǒng)計(jì)數(shù)據(jù)情況, 運(yùn)期間大數(shù)據(jù)集群計(jì)算、網(wǎng)絡(luò)資源消耗嚴(yán)重,而利用本方案在數(shù)據(jù)抽取的過(guò)程中,將增量情 況記錄下來(lái),不需要花費(fèi)時(shí)間,也幾乎不消耗任何計(jì)算、網(wǎng)絡(luò)資源。
[0079] 如圖3、圖4所示,本發(fā)明實(shí)施例提供了一種數(shù)據(jù)統(tǒng)計(jì)系統(tǒng)。裝置實(shí)施例可W通過(guò)軟 件實(shí)現(xiàn),也可W通過(guò)硬件或者軟硬件結(jié)合的方式實(shí)現(xiàn)。從硬件層面而言,如圖3所示,為本發(fā) 明實(shí)施例一種數(shù)據(jù)統(tǒng)計(jì)系統(tǒng)所在設(shè)備的一種硬件結(jié)構(gòu)圖,除了圖3所示的處理器、內(nèi)存、網(wǎng) 絡(luò)接口、W及非易失性存儲(chǔ)器之外,實(shí)施例中裝置所在的設(shè)備通常還可W包括其他硬件,如 負(fù)責(zé)處理報(bào)文的轉(zhuǎn)發(fā)忍片等等。W軟件實(shí)現(xiàn)為例,如圖4所示,作為一個(gè)邏輯意義上的裝置, 是通過(guò)其所在設(shè)備的CP閑尋非易失性存儲(chǔ)器中對(duì)應(yīng)的計(jì)算機(jī)程序指令讀取到內(nèi)存中運(yùn)行形 成的。本實(shí)施例提供的一種數(shù)據(jù)統(tǒng)計(jì)系統(tǒng)包括:
[0080] 創(chuàng)建單元401,用于創(chuàng)建數(shù)據(jù)抽取記錄表,并將所述數(shù)據(jù)抽取記錄表發(fā)送給更新單 元;
[0081 ]存儲(chǔ)單元402,用于存儲(chǔ)目標(biāo)條件,并將所述目標(biāo)條件發(fā)送給抽取工具;
[0082] 監(jiān)測(cè)單元403,用于監(jiān)測(cè)與大數(shù)據(jù)平臺(tái)相連接的至少一個(gè)關(guān)系型數(shù)據(jù)庫(kù),并將監(jiān)測(cè) 信息發(fā)送給所述抽取工具;
[0083] 所述抽取工具404,用于在滿(mǎn)足所述目標(biāo)條件時(shí),將具有增量數(shù)據(jù)的關(guān)系型數(shù)據(jù)庫(kù) 中的增量數(shù)