1 pentaho簡介 `pentaho`是一款開源`ETL`工具,純java編寫的C/S模式的工具,可綠色免安裝,開箱即用。支持Windows、macOS、Linux平臺。 ...
pentaho(keetle)數據同步實踐
1 pentaho簡介
pentaho
可讀作“彭塔湖”,在keetle
被pentaho公司收購後改名而來。
pentaho
是一款開源ETL
工具,純java編寫的C/S模式的工具,可綠色免安裝,開箱即用。支持Windows、macOS、Linux平臺。
pentaho
有2個核心設計,即轉換
和作業
。
轉換
是一個包含輸入、邏輯處理、輸出的完整過程,即ETL。
作業
是一個提供定時執行轉換的機制,即定時服務調度。
pentaho
官網下載鏈接:Pentaho Community Edition Download | Hitachi Vantara
pentaho
由主要四部分組成
- Spoon.bat/Spoon.sh :勺子,是一個圖形化界面,可圖形化操作轉換和作業
- Pan.bat/Pan.sh : 煎鍋,可用命令行方式調用轉換
- Kitchen.bat/Kitchen.sh : 廚房,可用命令行方式調用作業
- Carte.bat/Carte.sh : 菜單,是一個輕量級web容器,可建立專用、遠程的ETL Server
2 pentaho安裝
由於是純java編寫,依賴jdk環境。所以需要先配置jdk環境,這裡省略。
從官網下載pentaho
安裝包後,直接解壓。
重點目錄以及執行文件說明
- lib目錄 : 這是依賴庫目錄,例如各個資料庫的jdbc驅動,都放在此目錄下
- logs目錄 :這是轉換和作業運行的預設日誌輸出目錄
- simple-jndi目錄 :這是各個資料庫的JNDI連接信息的全局配置
- Spoon.bat/Spoon.sh :勺子,是一個圖形化界面,可圖形化操作轉換和作業
- Pan.bat/Pan.sh : 煎鍋,可用命令行方式調用轉換
- Kitchen.bat/Kitchen.sh : 廚房,可用命令行方式調用作業
- Carte.bat/Carte.sh : 菜單,是一個輕量級web容器,可建立專用、遠程的ETL Server
3 數據同步案例
這裡使用
sqlserver
到postgresql
同步。在Windows平臺上操作。
3.1 執行Spoon.bat文件,啟動圖形化界面
可以看到左側只有作業
和轉換
。
3.2 創建一個轉換,右鍵,新建
左側是一些轉換插件。
3.3 創建一個數據源輸入,展開輸入,選擇表輸入
切換到主對象樹
,選擇DB連接
,連接數據源。
由於我這裡是sqlserver同步到postgresql,所以需要創建sqlserver和postgresql的DB連接
。
創建連接前,需要先下載sqlserver的 jdbc驅動
mssql-jdbc-12.2.0.jre8.jar
和 postgresql的jdbc驅動postgresql-42.6.0.jar
,我這裡直接選的最新版。
sqlserver的連接
sqlserver的連接,如果選擇JNDI則無法連接,目前猜測可能是驅動版本問題
postgresql的連接
點擊測試,如果連接成功,則會彈框提示
3.4 編輯表輸入
先選擇資料庫連接
點擊獲取SQL查詢語句,獲取數據表
選擇一個數據表後,會提示是否選擇全部欄位,選擇是
點擊確定,一個表輸入就做好了。
3.5 創建一個數據源輸出
如果是全表覆蓋同步,則選擇表輸出,因為這裡是需要根據主鍵判斷是否重覆,重覆則更新,否則就插入,因此這裡選擇 插入/更新
展開輸出節點,選擇 插入/更新,並將其拖入到右側圖形界面中,然後將表輸入連線到當前節點,按住shift+滑鼠左鍵
這裡如果不先連線的話,在配置映射欄位時,就無法獲取源表欄位,需要自行輸入
雙擊進行編輯
點擊確定後,一個轉換就完成了
點擊左上角的運行按鈕,即可執行同步了。
Q1:這是一個單表轉換,那如果需要一次同步多個表呢?
A1:那就繼續按此步驟進行配置,多表轉換配置完成後如下
Q2:那表數量很多,這麼配置很費時間,有什麼更好的辦法麽?
A2:有。可以編寫腳本,正在學習中……
Q3: 前面的轉換已經配置完成了,但是只能手動點擊運行,能否定時自動運行?
A3:可以。繼續看第4節。
4 定時服務
選擇文件–>新建–>作業,即可創建一個作業。
在作業視窗,選擇核心對象
,展開通用,選擇Start、轉換、成功,分別拖入圖形界面中,並按順序連線
雙擊轉換就,進行編輯,選擇轉換文件
無論轉換、還是作業,都是以xml文件形式保存在本地
此時一個作業即配置完成,但是註意,還沒達到定時運行的目的,繼續配置
雙擊Start
,對作業進行配置
配置完後點擊確定,然後點擊圖形界面的運行按鈕,定時服務即啟動了
在日誌輸出視窗,可看到服務運行日誌
至此,pentaho的定時數據同步已完成。
Q4: 定時服務開啟後,這個程式視窗被關了或者說程式退出了,服務還運行嗎?
A4:不會。由於是C/S模式,客戶端服務端一體,進程退出即服務停止
Q5:那有類似後臺服務的方式,悄悄運行呢,不被這個界面退出所終止服務?
A5:有。請看第5節。
5 以後臺方式運行作業
在介紹中提到,有個Kitchen.bat/Kitchen.sh(廚房)
的執行文件,它的作用就是用命令方式調用作業。由於是在Windows平臺,所以選擇Kitchen.bat執行文件。
打開控制台視窗,進入pentaho
安裝目錄,即Kitchen.bat
所在目錄,執行如下命令
kitchen /file:{job file path} /level:Basic>>{log file path}
說明:
/file 參數指定 job文件
/level 參數指定日誌級別,並寫入指定的文件
指定日誌文件後,控制台界面就不會輸出日誌,否則日誌會在控制台輸出,像下麵這樣
Q6:總開著一個控制台黑框,也不太好,視窗被關了,服務不也停止了嗎?有什麼更好的方式嗎?
A6:是的。有。可以隱藏掉黑視窗,那麼繼續往下看。
5.1 隱藏控制台視窗
在Kitchen.bat同級目錄下創建一個txt文本文件,輸入如下內容
@echo off
if "%1" == "h" goto begin
mshta vbscript:createobject("wscript.shell").run("%~nx0 h",0)(window.close)&&exit
:begin
kitchen /file:"替換為job文件路徑" /level:Basic>>"替換為日誌文件路徑"
然後以ANSI
編碼方式另存為.bat
文件。用ANSI編碼,是防止文件路徑有中文出現亂碼。
至此,一個完成的pentaho
定時數據同步作業服務就完成了。
本文來自博客園,作者:宣君{https://www.nhit.icu/},轉載請註明原文鏈接:https://www.cnblogs.com/ycit/p/17620566.html