數倉相關思考3

2021-10-14 04:22:45 字數 1723 閱讀 1878

表的輸入格式和表中儲存資料的格式相關,輸入格式的作用是為select語言提供乙個輸入格式,以便於讀取表中的資料!

ods層表中儲存的資料格式為 textfile ,但是使用了lzo壓縮,為了可以正常讀取和切片資料檔案,必須設定為 deprecatedlzotextinputformat!

能否切片,主要取決於資料的儲存格式!如果資料儲存的是textfile,還要進一步判斷檔案的壓縮格式是否支援切片!

讀取的表中,除了資料還有其他檔案,不希望其他檔案作為資料被讀入,就需要設定!

表建立的是external 表

ods層表的特點是直接將採集的資料匯入,不做修改,因此ods層表的字段個數,數量和順序都需要參考採集資料中字段的數量,個數,順序,型別!

ods層資料是每日匯入,因此建表使用分割槽表,指定匯入資料的日期作為分割槽字段

ods層所有的資料都是 textfile + lzo壓縮,

因此指定inputformat為deprecatedlzotextinputformat

指定表的儲存位置為指定的位置

ods層的業務資料,每個欄位都是使用\t分割,使用row format指定每行的分隔符

單引號和雙引號都是在需要將一些特殊字元例如空格,作為乙個字串的整體時,使用!

單引號中不會脫

義,雙引

號中

不會脫義,雙引號中

不會脫義,雙

引號中會脫義,會被認為是引用乙個變數!

注意事項:如果最外層是雙引號,那麼其中字串的都會被

脫義,如

果最外層

是單引號

,都會被脫義,如果最外層是單引號,

都會被脫義,

如果最外

層是單引

號,不會被脫義

事務型事實表:     如果乙個事實,一旦發生,不會被修改,那麼這個事實的表就是事務型事實表

同步資料時,只需要同步新增的資料!

插入資料: insert overwrite 某個分割槽

週期型快照事實表: 確定乙個事實快照的取樣週期,在週期結束時,使用快照的形式,記錄事實。

核心:確定取樣的週期

插入資料: insert into 某個表

累積型快照事實表: 在事實的生命週期中,只對幾個關鍵的取樣點感興趣,希望以累積的形式呈現事實變化趨勢,採取累積型快照事實表!

插入資料時,涉及更新操作: insert overwrite (old + new )

hiveonmr :  mr不支援dag運算!複雜的hql,可能會被解析為多個job,多個job根據依賴關係依次執行!

hql -----> yarn上提交乙個 jobset(多個job)

hiveonspark : spark支援dag運算!

hql ------> spark job

只要hive客戶端不關閉,session一直保持!

hiveontez: 支援dag運算!

區別於spark,這個session會有預設的超時時間(30s),一旦30s不再提交hql,session關閉,

數倉相關工具

資料同步工具 離線同步 sqoop datax 實時同步 cannal flink cdc 許可權管理 kerberos,cdh cloudmanager sentry hdp ambari ranger 其中後兩者可以做到目錄級別使用者級別許可權管理 資料質量監控工具 apache griffin...

數倉相關知識集合

數倉建模 說到數倉建模,就得提下經典的2套理論 數倉的建模或者分層,其實都是為了更好的去組織 管理 維護資料,實際開發時會整合2種方式去使用,當然,還有些其他的,像data vault模型 anchor模型,暫時還沒有應用過,就不說了。維度建模,一般都會提到星型模型 雪花模型,星型模型做olap分析...

數倉建模的3正規化

1 第一正規化 1nf 表中的列只能含有原子性 不可再分 的值。例如下圖表一就不符合規範 idname mobile 101張三 上例子中張三有兩個手機號,違反了1nf原則,應當拆分為如下表二 idname mobile 101張三 101張三 9876543210 2 第二正規化 2nf 滿足第一...