Hive-拉鍊表

1、問答介紹

1.什麼是拉鍊表?mysql

    維護歷史狀態,以及最新狀態數據的一種表,拉鍊表根據拉鍊粒度的不一樣,實際上至關於快照,只不過作了優化,去除了一部分不變的記錄,經過拉鍊表能夠很方便的還原出拉鍊時點的客戶記錄。記錄一個事物從開始,一直到當前狀態的全部變化的信息(生命週期)。核心字段爲生效開始日期與生效結束日期(粒度)。sql

2.爲何用拉鍊表(應用場景決定)?工具

 1)原數據量很大(查詢費勁)優化

 2)表中部分字段會被更新(更新後又想看歷史)設計

 3)需求中須要對某一時刻數據查詢(業務粒度)code

 4)更新頻率不頻繁且更新數據量不大(拉鍊表過大就沒多大意義了)blog

 5)須要節省存儲資源(節約成本)生命週期

2、Hive使用拉鍊表

1.案例場景:將mysql中的數據按每日的粒度增量(新建+修改)跟新到hive拉鍊表。資源

2.需求:經過相關操做獲得最新的拉鍊表。class

3.相關表:mysql原表,Hive拉鍊表,Hive數據變化表,Hive數據臨時表

4.相關技巧點(先思考,後面解釋):

1.如何獲取mysql當日數據變更?(粒度爲天)
    2.如何hive表跟新修改後的數據?(如何改變生效結束日期)
    3.拉鍊表如何跟新?(hive不能修改)

5.獲取mysql每日數據變化:獲取到每日變化的數據後,將數據覆蓋到hive數據變化表:初始化拉鍊表爲mysql全量導入hive拉鍊表

1.設計mysql表時加入數據建立時間及操做更新時間(最優)
    2.第三方監控工具如canal(繁瑣)

6.hive更改數據的生效結束時間:將新增數據獲取到hive臨時表

 

 

 

7.將hive臨時表覆蓋hive拉鍊表,任務完成。

8.hive臨時表爲該方案的核心技術點。

 

如有疑問可評論中提出,後續補充到本文。

相關文章
相關標籤/搜索