hadoop表名規(guī)則?
為了避免底層業(yè)務(wù)變動對上層需求影響過大,屏蔽底層復(fù)雜的業(yè)務(wù)邏輯,盡可能簡單、完整的在接口層呈現(xiàn)業(yè)務(wù)數(shù)據(jù),建設(shè)高內(nèi)聚松耦合的數(shù)據(jù)組織,使數(shù)據(jù)從業(yè)務(wù)角度可分割,顯得尤為重要。從整個集團(tuán)業(yè)務(wù)條線出發(fā),形成數(shù)據(jù)倉庫總體概念框架,并對整個系統(tǒng)所需要的功能模塊進(jìn)行劃分,明確各模塊技術(shù)細(xì)節(jié),建設(shè)一套完整的開發(fā)規(guī)范。
分層規(guī)范
ODS(原始數(shù)據(jù)層):也被稱為貼源層,ODS層是數(shù)據(jù)倉庫準(zhǔn)備區(qū),為DWD層提供基礎(chǔ)原始數(shù)據(jù)。
DWD(明細(xì)數(shù)據(jù)層):和ODS粒度一致的明細(xì)數(shù)據(jù),對數(shù)據(jù)進(jìn)行去重,臟數(shù)據(jù)過濾,空處理,保證數(shù)據(jù)質(zhì)量。
DWS(服務(wù)數(shù)據(jù)層):輕度匯總數(shù)據(jù)及建寬表(按主題)存放數(shù)據(jù)。
ADS(應(yīng)用數(shù)據(jù)層):存放應(yīng)用類表數(shù)據(jù)。
ODS - DWD - DWS - ADS
ODS - DW(輕度數(shù)據(jù)匯總層、高度數(shù)據(jù)匯總層) - DM(數(shù)據(jù)集市)
表規(guī)范
命名
維表 命名形式:dim_描述
事實(shí)表 命名形式:fact_描述_[AB]
臨時表 命名形式:tmp_ 正式表名_ [C自定義序號]
寬表 命名形式:dws_主題_描述_[AB]
備份表 命名形式:正式表名_bak_yyyymmdd
表命名解釋:
1)表名使用英文小寫字母,單詞之間用下劃線分開,長度不超過40個字符,命名一般控制在小于等于6級。
2)其中ABC第一位"A"時間粒度:使用"c"代表當(dāng)前數(shù)據(jù),"h"代表小時數(shù)據(jù),"d"代表天數(shù)據(jù),"w"代表周數(shù)據(jù),"m"代表月數(shù)據(jù),"q"代表季度數(shù)據(jù), "y"代表年數(shù)據(jù)。
3)其中ABC的第二位"B"表示對象屬性,用"t"表示表,用"v"表示視圖。
4)其中ABC的第三位"C"自定義序號用于標(biāo)識多個臨時表的跑數(shù)順序。
注釋
注釋要結(jié)合表的英文名,要求注釋簡潔明了,體現(xiàn)出表的業(yè)務(wù)出處、主題和用途。
存儲格式
所謂的存儲格式就是在Hive建表的時候指定的將表中的數(shù)據(jù)按照什么樣子的存儲方式,如果指定了方式,那么在向表中插入數(shù)據(jù)的時候,將會使用該方式向HDFS中添加相應(yīng)的數(shù)據(jù)類型。在數(shù)倉中建表默認(rèn)用的都是PARQUET存儲格式,相關(guān)語句如下所示:
STORED AS INPUTFORMAT
'org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat'
OUTPUTFORMAT
'org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat'
字符集
Hadoop和hive 都是用utf-8編碼的,在建表時可能涉及到中文亂碼問題,所以導(dǎo)入的文件的字符編碼統(tǒng)一為utf-8格式。
約定
理論上在數(shù)倉落地的表不應(yīng)該出現(xiàn)null未知類型,對于可能出現(xiàn)null的字段,如果為字符型統(tǒng)一為空字符串,如果是數(shù)值則給0。
字段規(guī)范
命名
1)使用英文小寫字母,單詞之間用下劃線分開,長度不超過30個字符,命名一般控制在小于等于4級;
2)和源數(shù)據(jù)ods層表字段名一致,如為新增字段,盡量言簡意賅;
3)英文名盡量專業(yè),符合業(yè)界要求,不得使用漢語拼音;
4)盡量避免使用關(guān)鍵字。如無法避免,使用”`”轉(zhuǎn)義;
5)指標(biāo)字段能使用縮寫的盡量使用統(tǒng)一的縮寫,如申請金額統(tǒng)計apply_amt_sum。
注釋
注釋本著簡潔、詳實(shí)、完整的原則,對于有業(yè)務(wù)含義的字段,在注釋中需要枚舉并解釋其業(yè)務(wù)含義,如ods_loan_apidata_order_info.order_status 訂單狀態(tài):1待支付,2支付不成功,3支付成功;
類型
日期時間等格式統(tǒng)一用string類型,字符串也是用string,數(shù)值的話,會根據(jù)字段定義來確定,對于有小數(shù)點(diǎn)要求的,比如某些金額、利率,需要用到decimal類型,無小數(shù)點(diǎn)要求的用浮點(diǎn)類型double和整數(shù)類型(int,bigint)。
代碼規(guī)范
sql編碼
1)關(guān)鍵字右對齊,代碼注釋詳盡,查詢字段時每行不超過三個字段,縮進(jìn)時空四格等相關(guān)書寫規(guī)范。
2)明細(xì)數(shù)據(jù)層依賴于ods層,應(yīng)用數(shù)據(jù)層依賴于服務(wù)數(shù)據(jù)層,原則上,不允許跨層查詢。
3)如果SQL語句連接多表時,應(yīng)使用表的別名來引用列。
4)WHERE條件中參數(shù)與參數(shù)值使用的類型應(yīng)當(dāng)匹配,避免進(jìn)行隱式類型轉(zhuǎn)化。
5)在SELECT語句中只獲取實(shí)際需要的字段。
shell腳本
調(diào)度腳本主要是通過跑shell腳本,shell腳本的注意點(diǎn):
1)命名與所跑的目標(biāo)表名相同,注釋要完善,后綴以.sh結(jié)尾。
2)腳本頭需要加上分割線、作者、日期、目的、描述等信息。