從安轉到部署Kettle踩坑記錄

       無疑kettle是一款非常強大的ETL轉換工具,它的強大也來源於它的開源性,可以運行在任何平臺上.kettle是用java寫的,所以有java虛擬機的地方它都可以運行.

       現在所要做的是從最開始的安轉到搭建成一個在windows上開發,以linux爲服務器,資源庫位於mysql的一個kettle環境.並完成從oracle同步到mysql的一個程序.

       首先,從網上下載kettle安轉包,我下載的是pdi-ce-6.0.1.0-386.zip,解壓出來是data-integration這個文件夾.(坑一)想要安裝在哪裏,就從哪裏解壓.如果把解壓出來的文件再移動到其他地方,啓動的時候會報錯.

       在linux上解壓一份kettle,然後在data-integration下執行”nohup ./carte.sh localhost 8080 >kettle.log &”.這樣一來服務就在8080端口上以後臺的方式運行了,並將日誌輸出到了kettle.log中.

   因爲需要在windows上開發,所以在windows下也要解壓一份kettle.(坑二)將數據庫連接的驅動包放在lib下,否則進行數據庫連接的時候會提示找不到驅動包.如圖A.

                                                                              圖 A

       添加完驅動包後,啓動kettle,在windows下直接雙擊spoon.bat即可運行.在開始編寫我們的kettle程序之前我們首先需要建立一個資源庫,採用database的形式.在創建資源庫進行到執行sql語句的時候會報如圖B的錯誤(坑三)

                                                                                     圖B

       這時候我們需要將sql語句中所有的’N’和’Y’改成對應的0和1,然後重新建立資源庫.資源庫的默認用戶密碼爲admin,admin.

   在資源庫中創建需要進行同步的mysql和oracle的連接.(坑四)oracle連接的數據庫名稱應該爲SID,如果是service_name的話需要在前面加上/.如圖C.

                                                                               圖C

至於SID與service_name的區別請自行度娘.

       (坑五)因爲要同步數據,在mysql裏面存儲着上次更新的時間,每次將增量數據的最新插入時間更新到mysql進行記錄.剛開始採用執行sql語句控件的方式,以插入時間爲參數,都爲date類型,卻總出現值與字段類型不相匹配的情況,最後採用的是更新空間.

寫好任務之後在本地直接運行沒問提,(坑六)然後不是到linux服務器上遠程執行卻報找不到轉換文件,切記在運行之前一定要勾上此選項,如圖D

.

                                                        圖D

       在瀏覽器上輸入kettle服務器ip和端口查看自己的作業狀體,默認用戶密碼爲cluster,cluster.(坑七)查看任務,出現中文無法顯示,如

圖E

                                  圖E

正常如圖F

 

                                圖F

這個坑填了好久都沒有填成功,不過並不影響功能的正常使用.如果有哪位同志填坑成功的話,希望可以在下面回覆一下填坑過程,在此不勝感激.

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章