首頁技術(shù)文章正文

Hive數(shù)據(jù)分層有哪些優(yōu)點(diǎn)?具體每一層含義是什么?

更新時(shí)間:2021-07-23 來源:黑馬程序員 瀏覽量:

IT培訓(xùn)班

為什么要分層?
作為一名數(shù)據(jù)的規(guī)劃者,我們肯定希望自己的數(shù)據(jù)能夠有秩序地流轉(zhuǎn),數(shù)據(jù)的整個(gè)生命周期能夠清晰明確被設(shè)計(jì)者和使用者感知到。直觀來講就是如圖這般層次清晰、依賴關(guān)系直觀。

Hive數(shù)據(jù)倉庫分層
但是,大多數(shù)情況下,我們完成的數(shù)據(jù)體系卻是依賴復(fù)雜、層級混亂的。如下的右圖,在不知不覺的情況下,我們可能會做出一套表依賴結(jié)構(gòu)混亂,甚至出現(xiàn)循環(huán)依賴的數(shù)據(jù)體系。
Hive數(shù)據(jù)倉庫分層

因此,我們需要一套行之有效的數(shù)據(jù)組織和管理方法來讓我們的數(shù)據(jù)體系更有序,這就是談到的數(shù)據(jù)分層。數(shù)據(jù)分層并不能解決所有的數(shù)據(jù)問題,但是,數(shù)據(jù)分層卻可以給我們帶來如下的好處:
1)清晰數(shù)據(jù)結(jié)構(gòu):每一個(gè)數(shù)據(jù)分層都有它的作用域和職責(zé),在使用表的時(shí)候能更方便地定位和理解;
2)減少重復(fù)開發(fā):規(guī)范數(shù)據(jù)分層,開發(fā)一些通用的中間層數(shù)據(jù),能夠減少極大的重復(fù)計(jì)算;
3)統(tǒng)一數(shù)據(jù)口徑:通過數(shù)據(jù)分層,提供統(tǒng)一的數(shù)據(jù)出口,統(tǒng)一對外輸出的數(shù)據(jù)口徑;
4)復(fù)雜問題簡單化:將一個(gè)復(fù)雜的任務(wù)分解成多個(gè)步驟來完成,每一層解決特定的問題。

為了滿足前面提到好處,通常將數(shù)據(jù)模型分為三層:數(shù)據(jù)運(yùn)營層( ODS )、數(shù)據(jù)倉庫層(DW)和數(shù)據(jù)應(yīng)用層(APP)。簡單來講,我們可以理解為:ODS層存放的是接入的原始數(shù)據(jù),DW層是存放我們要重點(diǎn)設(shè)計(jì)的數(shù)據(jù)倉庫中間層數(shù)據(jù),APP是面向業(yè)務(wù)定制的應(yīng)用數(shù)據(jù)。下面詳細(xì)介紹這三層的設(shè)計(jì)。

數(shù)據(jù)模型的分層

1)源數(shù)據(jù)層(ODS)
此層數(shù)據(jù)無任何更改,直接沿用外圍系統(tǒng)數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù),不對外開放;為臨時(shí)存儲層,是接口數(shù)據(jù)的臨時(shí)存儲區(qū)域,為后一步的數(shù)據(jù)處理做準(zhǔn)備。

2)數(shù)據(jù)倉庫層(DW)
也稱為細(xì)節(jié)層,DW 層的數(shù)據(jù)應(yīng)該是一致的、準(zhǔn)確的、干凈的數(shù)據(jù),即對源系統(tǒng)數(shù)據(jù)進(jìn)行了清洗(去除了雜質(zhì))后的數(shù)據(jù)。

此層可以細(xì)分為三層:
明細(xì)層DWD(Data Warehouse Detail):存儲明細(xì)數(shù)據(jù),此數(shù)據(jù)是最細(xì)粒度的事實(shí)數(shù)據(jù)。該層一般保持和ODS層一樣的數(shù)據(jù)粒度,并且提供一定的數(shù)據(jù)質(zhì)量保證。同時(shí),為了提高數(shù)據(jù)明細(xì)層的易用性,該層會采用一些維度退化手法,將維度退化至事實(shí)表中,減少事實(shí)表和維表的關(guān)聯(lián)。

中間層DWM(Data WareHouse Middle):存儲中間數(shù)據(jù),為數(shù)據(jù)統(tǒng)計(jì)需要?jiǎng)?chuàng)建的中間表數(shù)據(jù),此數(shù)據(jù)一般是對多個(gè)維度的聚合數(shù)據(jù),此層數(shù)據(jù)通常來源于DWD層的數(shù)據(jù)。

業(yè)務(wù)層DWS(Data WareHouse Service):存儲寬表數(shù)據(jù),此層數(shù)據(jù)是針對某個(gè)業(yè)務(wù)領(lǐng)域的聚合數(shù)據(jù),業(yè)務(wù)層的數(shù)據(jù)通常來源與此層,為什么叫寬表,主要是為了業(yè)務(wù)層的需要在這一層將業(yè)務(wù)相關(guān)的所有數(shù)據(jù)統(tǒng)一匯集起來進(jìn)行存儲,方便業(yè)務(wù)層獲取。此層數(shù)據(jù)通常來源與DWD和DWM層的數(shù)據(jù)。

在實(shí)際計(jì)算中,如果直接從DWD或者ODS計(jì)算出寬表的統(tǒng)計(jì)指標(biāo),會存在計(jì)算量太大并且維度太少的問題,因此一般的做法是,在DWM層先計(jì)算出多個(gè)小的中間表,然后再拼接成一張DWS的寬表。由于寬和窄的界限不易界定,也可以去掉DWM這一層,只留DWS層,將所有的數(shù)據(jù)在放在DWS亦可。

3)數(shù)據(jù)應(yīng)用層(DA 或 APP)
前端應(yīng)用直接讀取的數(shù)據(jù)源;根據(jù)報(bào)表、專題分析的需求而計(jì)算生成的數(shù)據(jù)。

4)維表層(Dimension)
最后補(bǔ)充一個(gè)維表層,維表層主要包含兩部分?jǐn)?shù)據(jù):
A)高基數(shù)維度數(shù)據(jù):一般是用戶資料表、商品資料表類似的資料表。數(shù)據(jù)量可能是千萬級或者上億級別。
B)低基數(shù)維度數(shù)據(jù):一般是配置表,比如枚舉值對應(yīng)的中文含義,或者日期維表。數(shù)據(jù)量可能是個(gè)位數(shù)或者幾千幾萬。

Hive數(shù)據(jù)倉庫分層

(3)問題擴(kuò)展
數(shù)據(jù)倉庫系統(tǒng)架構(gòu)

Hive數(shù)據(jù)倉庫分層

上圖系統(tǒng)各部分的執(zhí)行流程是:
1)確定分析所依賴的源數(shù)據(jù)。
2)通過ETL將源數(shù)據(jù)采集到數(shù)據(jù)倉庫。
3)數(shù)據(jù)按照數(shù)據(jù)倉庫提供的主題結(jié)構(gòu)進(jìn)行存儲。
4)根據(jù)各部門的業(yè)務(wù)分析要求創(chuàng)建數(shù)據(jù)集市(數(shù)據(jù)倉庫的子集)。
5)決策分析、報(bào)表等應(yīng)用系統(tǒng)從數(shù)據(jù)倉庫查詢數(shù)據(jù)、分析數(shù)據(jù)。
6)用戶通過應(yīng)用系統(tǒng)查詢分析結(jié)果、報(bào)表。

(4)結(jié)合項(xiàng)目中使用

電商網(wǎng)站的數(shù)據(jù)體系設(shè)計(jì)
這里針對用戶訪問日志這一部分?jǐn)?shù)據(jù)進(jìn)行舉例說明:
在ODS層中,由于各端的開發(fā)團(tuán)隊(duì)不同或者各種其它問題,用戶的訪問日志被分成了好幾張表上報(bào)到了我們的ODS層。
為了方便大家的使用,我們在DWD層做了一張用戶訪問行為天表,在這里,我們將PC網(wǎng)頁、H5、小程序和原生APP訪問日志匯聚到一張表里面,統(tǒng)一字段名,提升數(shù)據(jù)質(zhì)量,這樣就有了一張可供大家方便使用的明細(xì)表了。
在DWM層,我們會從DWD層中選取業(yè)務(wù)關(guān)注的核心維度來做聚合操作,比如只保留人、商品、設(shè)備和頁面區(qū)域維度。類似的,我們這樣做很多個(gè)DWM的中間表。
然后在DWS層,我們將一個(gè)人在整個(gè)網(wǎng)站中的行為數(shù)據(jù)放到一張表中,這就是我們的寬表了,有了這張表,就可以快速滿足大部分的通用型業(yè)務(wù)需求了。
最后,在APP應(yīng)用層,根據(jù)需求從DWS層的一張或者多張表取出數(shù)據(jù)拼接成一張應(yīng)用表即可。

Hive數(shù)據(jù)倉庫分層





猜你喜歡:

數(shù)據(jù)倉庫的基本架構(gòu)介紹[大數(shù)據(jù)培訓(xùn)]

數(shù)據(jù)倉庫有幾種數(shù)據(jù)模型?

什么是數(shù)據(jù)倉庫?Hive數(shù)據(jù)倉庫特點(diǎn)簡介

黑馬程序員python+大數(shù)據(jù)培訓(xùn)

分享到:
在線咨詢 我要報(bào)名
和我們在線交談!