1.存儲過程遷移方法:
存儲過程的遷移我們直接用單個的HQL腳本里進行邏輯的遷移,需要注意的點是,在過程裏有一些不需要落地的臨時表(先delete再insert),以及最終的結果表需要落地(先delete再insert)。如下圖:
在HQL腳本里,臨時表(刪除表後再重建表),結果表覆蓋方式重寫指定分區數據(overwrite)。如下圖:
2.包遷移方法:
包的遷移,我們可以理解爲包是由多個過程組成的,拆分成上面的過程遷移方式,生成多個HQL腳本,在調用的時候跟據包的順序執行就可以了。
3.函數遷移方法:
函數遷移中,我們首先看是否可以採用HQL腳本實現函數的邏輯,如果做不到,我們需要自己在HIVE中編寫自定義的函數,自定義的函數編寫比較長,可以單獨寫一遍文單介紹。然後發佈到HIVE環境中,就可以直接使用,像使用sum,avg等這樣的函數一樣。目前HIVE自帶的函數很豐富了,基本會滿足我們的需求。
4.調度遷移:
在關係庫中,我們調度採用的是JOB,以及包和過程裏的調用關係。在HIVE中,我們遷移的只有單個的HQL腳本,如何按照關係庫的調度和調用關係來讓HQL腳本執行,最原始的方法是我們編寫一個SH腳本,通過SH腳本來調用HQL腳本,這裏可以做到串行,並行調用,如下圖:
程序邏輯的調用和執行關係完成了,如何達到我們的JOB定時執行呢,我們也是採用linux的crontab命令。如下圖說明:
具體樣例腳本見:https://github.com/blt328/abc_hive下載.
更多技術文章請關注公衆號BLT328(長按後點識別圖中二維碼):