1. 程式人生 > >Python開發Kettle做大資料ETL(前期準備)

Python開發Kettle做大資料ETL(前期準備)

Python開發Kettle做大資料ETL,這回事要上線的了。前期準備kettle任務,本地階段。

老規矩,交代一下業務場景,因為所有的框架和技術元件都一定要基於需求,解決實際問題,否則那就是閉門造車,沒有絲毫意義。

應用場景​介紹。

這回,我們記錄下來了,從整體架構上來說,我們出現了一種同步情況,當前臺頁面訪問頁面時,出現了資料集合為空:

移除點選此處新增圖片說明文字

可以看到,今天是13號,6月13號,我們需要跑12號的資料,卻沒有,問題就出現在當我們跑這塊python指令碼做任務排程的時候,出現了表資料還沒有跑過來,會跑空表,但是表結構都有的,欄位和資料結構都有,並不會報錯的,請不要疑惑。那麼你又要問,為什麼不校驗為空,那帶你看看這個任務排程吧,

移除點選此處新增圖片說明文字

​是不是挺複雜的,這還不算啥,當時開發是我們大資料經理開發的,現在如我所說,他走了,我要頂上來,也不要抱怨了,當時沒做的事情,我們現在可以做了。就像我把他的studio做restful給推翻了一樣,但是kettle目前不推翻,因為,如果全部寫mapreduce的話,估計,要累翻了。不過,之前我的老大的上一任大資料經理,帶領的團隊就是全部靠程式碼完成這些工作的,沒有用任何開源整合技術,王經理上任後就整合了kettle,不知道下一任來了會做怎樣的改變。

閒言少說,直接開發了。還是那樣,先把系統時間開發好:

移除點選此處新增圖片說明文字

​接著開發業務表,從hive的日活躍使用者錶轉移到庫:

移除點選此處新增圖片說明文字

​ 請注意這裡的id=id,這將觸發事物,決定是否更新和插入,如果id一致,說明需要update。

移除點選此處新增圖片說明文字

​注意這裡使用了很多udf函式,當資料庫的函式不夠用時,我們往往開發udf,或者udaf,熟悉大資料的同學應該清楚,如果不熟悉也無妨,一般是用java編寫的函式方法,那稍後,我們可以去看一下怎麼寫udf,然後怎麼釋出到資料庫引用裡,在後期我們都要嘗試的。

業務清楚了,接下來就是整合了,寫一個job:

移除點選此處新增圖片說明文字

​start不定時,

移除點選此處新增圖片說明文字

​然後建立轉換:

移除點選此處新增圖片說明文字

​郵箱設定也看一下吧,

移除點選此處新增圖片說明文字

然後可以跑了:

移除點選此處新增圖片說明文字

​到目前為止,這些都是在本地先開發,可以看到,hive跑的很慢的,正在跑著在,我們能做的,就是等。

移除點選此處新增圖片說明文字

​之前被我刪掉的測試庫資料(幾乎和生產資料一模一樣)約有2萬多條,交給hive了,而且還有函式拼裝。然後看一下,應該就有了。

移除點選此處新增圖片說明文字

​並且,郵件也已經發送過來了:

移除點選此處新增圖片說明文字

到這裡,我們雖然看到很簡單,但是測試部分,我是認真私下裡測試了2個小時了,所以說為什麼看書覺得東西簡單,自己做題目做專案覺得都是問題,因為,作者已經把遇到的坑解決過了,然後整理的一個沒有問題的東西。

另外,我感覺要寫很多了,因為馬上還得去生產庫上開發,剛才開發用的localhost,生產上還得寫python指令碼,所以,用兩篇來記錄吧。不然沒辦法了,寫不完。

對哦,再說一個細節,這裡我們沒有用kettle的時間排程,因為馬上我們會用python來寫任務排程。