為什么要寫kettle專欄?
在使用了kettle近5年的時間內,深深切切體會到kettle這個工具帶來的作業便利性,尤其是對于java工程師來說,簡直就是福利,本著開源精神,決定將自己多年的使用經驗分享給愛好者們,希望同大家共同成長,
為什么要使用kettle工具?對于程式員來說,大部分作業就是用代碼來解決業務問題,解決業務問題程序中最核心的莫非就是對于業務資料的處理,說白了,就是通過代碼來處理資料,已達到解決業務問題的目的,
可見,程式員的主要作業其實就是處理資料,處理資料最令我們頭疼的又是哪些問題呢,第一個問題就是資料格式,格式的差異性,也就是各種異構資料,這就要導致需要進行大量的編碼來解決不同格式的問題(如,xml格式,json格式,EDI格式,txt文本格式等),統一資料格式是很難做到的,那么除了進行硬編碼之外,還有其他的方式嗎?當然有,那就是使用kettle,處理資料第二個頭疼的問題是什么呢,就是資料源來自不同的地方,可能是其他系統,也可能是本地檔案(word,excel,txt等),也可能是其它型別的資料庫(hbase,access,elasticsearch等),倘若這些不同資料源的資料要進行整合和格式統一,那就會帶來大量的開發作業量,那么有沒有其他的解決方案呢?當然有,那就是kettle,這些是kettle最基本的能力,更強大的用法會在以后的教程中詳細講解,
kettle是什么?
- ETL是什么
ETL(Extract-Transform-Load),即資料抽取、轉換、裝載的程序,它是一種思想,主要是說,從不同的資料源獲取資料,并通過對資料進行處理(格式,協議等轉換),最后將處理后的資料提供給其他系統使用,當然這個程序,就是軟體研發,尤其是后端研發最核心的作業,
- kettle概念
kettle,翻譯為中文叫做水壺,顯而易見,水壺不管壺里面裝的是什么液體,最終都會從壺嘴平滑的流出來,就好比,不管水壺裝的是什么型別的資料,最后都會通過壺嘴以特定的格式流出來,其實就是對ETL思想的一種實作,它是通過java語言撰寫,秉承ETL思想的工具,既然是此采用java實作的,那就肯定具有跨平臺的特性,kettle官網地址
- kettle組成
kettle既然是一種工具,要處理不同資料源的異構資料,那就要求它能夠進行圖形化操作,在UI界面上對資料源進行資料治理,最終所有的圖形化處理都要能夠保存為kettle可識別的檔案,
kettle主要生成兩種型別的檔案,一種轉換檔案,一種是任務檔案,即:transformation和job,transformation完成針對資料的基礎轉換,job則完成整個作業流的控制,
這兩種檔案之間是可以相互呼叫的,已達到最終的資料清洗目的,
kettle使用場景(demo)
- 場景一:獲取rest介面資料并保存為文本檔案
將rest介面作為資料源,將物聯網資料上傳到kettle檔案中,供kettle進行轉換處理,并將結果保存到txt檔案中;從下圖可以看出,有一個節點叫做獲取引數,這個節點就是用來接收rest介面傳遞來的資料,還有一個節點叫做回應結果,這個節點是用來將遙感資料保存到txt檔案中,
- 場景二:任務調度(周期性執行場景一)
如果想要周期性的執行轉換,就需要采用任務調度的方式進行處理,針對場景一,對其進行任務調度,從下圖可以看出,有一個節點叫做轉換,轉換節點配置的就是場景一的轉換檔案;還有一個節點叫做START,就是用來啟動任務調度程序的,
以上兩個場景僅能作為demo級別的一個嘗試,希望通過這兩個場景能夠引起大家的興趣,之后會給大家詳細介紹作業中真正的足夠強大的使用場景;
總結
本篇通過介紹kettle的基本概念,kettle的基本組成,還有兩個簡單的使用場景,希望大家能夠初步認識kettle,并且能夠在遇到資料處理的問題時,能夠想到kettle這個強大的工具;通過我五年的使用經驗,真心希望大家和我一樣把它用起來,為我們打工人的編碼生活,增加一點樂趣,好了,在下一篇文章,我會講解如何搭建kettle開發環境,如何使用kettle開發工具,如何完成一個helloworld轉換和任務,敬請關注!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/267054.html
標籤:其他
下一篇:IDEA上使用Scala編程方法
