表的輸入格式和表中儲存資料的格式相關,輸入格式的作用是為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 滿足第一...