顯示具有 Kettle 標籤的文章。 顯示所有文章
顯示具有 Kettle 標籤的文章。 顯示所有文章

2023年3月13日 星期一

Kettle用Nginx作為反向代理的注意事項

場景:
統一用Nginx作為反向代理,而Kettle及Nginx皆為Docker容器。

Nginx:
在Kettle的設定檔,需新增sub_filter修正WebUI連結,避免找不到網頁錯誤。
{
    sub_filter_once off;
    sub_filter /kettle/status /kettle/status/;
    sub_filter /kettle/jobStatus /kettle/jobStatus/;
}

Kettle:
需修改<Kettle目錄>/pwd/carte-config-master-8080.xml,
<hostname>localhost</hostname>改為
<hostname>0.0.0.0</hostname>

2022年12月27日 星期二

Modified JavaScript value在Transformation的第1個Step無任何輸出

 狀況:

Transformation內含2個Step,第1個Step產生SSH指令供第2個Stepg執行

(Step1)[Modified JavaScript value]→(Step2)[Run SSH commands]














但並未產生任何可供SSH執行的指令。

(視窗下方Execution Results區域→Preview data頁籤→Fields欄位無任何內容)


修正:

在[Modified JavaScript value]前面加一個空的[Get variables]即可。

(Step1)[Get variables]→(Step2)[Modified JavaScript value]→(Step3)[Run SSH commands]



2022年12月20日 星期二

PDI Kettle異常使用Arthas偵錯排除

1.Kettle Spoon的[Run SSH commands]連線異常










2.下載Arthas並執行,附加到/<Kettle目錄>/launcher/launcher.jar

3.在GitHub搜尋source code,得知進行SSH連線的元件是com.trilead.ssh2,方法是connect

4.輸入tt -t com.trilead.ssh2.Connection connect監控connect方法

5.回到Spoon,點擊[Test connection]按鈕重現錯誤,記下INDEX數字(本例為1000)

6.輸入tt -i 1000 -w 'target.connect'觸發錯誤

7.查看~/logs/arthas/arthas.log,發現"Caused by: java.io.IOException: Cannot negotiate, proposals do not match"的異常

8.查詢此錯誤為SSH演算法不相容,修改伺服端主機的/etc/ssh/sshd_config,
MACS區段加入hmac-sha1-96,Kexalgorithms區段加入diffie-hellman-group-exchange-sha1
※Windows主機為%programdata%\ssh\sshd_config

新增內容如下

Match Group administrators

       AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys

Match all<--如果有Match Group要加這行關閉Match block


# Pentaho Kettle [Run SSH commands]

Kexalgorithms +diffie-hellman-group-exchange-sha1

MACS +hmac-sha1-96

HostKeyAlgorithms +ssh-rsa,ssh-dss<--Windows主機再加這行


9.重啟SSH服務

10.Kettle Spoon的[Run SSH commands]連線即正常


PS:Arthas誠為神器也

PS:sshd啟用log紀錄會很有幫助

Java程式整合Kettle(未完成)

Kettle除了獨立運行的Carte Server,透過呼叫Rest API方式啟動Job及Transformer之外,

還有Java API可整合到系統內部。


Oracle資料庫驅動程式因為Oracle許可證不允許發布在公共Maven倉庫,所以必須手動下載到自建的內部Maven倉庫。


Kettle核心庫也必須手動下載到自建的內部Maven倉庫。


mvn install:install-file -Dfile=jtds-1.3.1.jar -DgroupId=net.sourceforge.jtds -DartifactId=jtds -Dversion=1.3.1 -Dpackaging=jar #舊版(2008以前)MSSQL支援

mvn install:install-file -Dfile=ojdbc7.jar -DgroupId=com.oracle -DartifactId=ojdbc7 -Dversion=12.1.0.2 -Dpackaging=jar #舊版(10g)Oracle支援

mvn install:install-file -Dfile=orai18n.jar -DgroupId=com.oracle.ojdbc -DartifactId=orai18n -Dversion=19.3.0.0 -Dpackaging=jar #Oracle多語系支援

mvn install:install-file -Dfile=metastore-9.3.0.0-428.jar -DgroupId=org.pentaho -DartifactId=libformula -Dversion=9.3.0.0-428 -Dpackaging=jar

mvn install:install-file -Dfile=libformula-9.3.0.0-428.jar -DgroupId=org.pentaho.reporting.library -DartifactId=libformula -Dversion=9.3.0.0-428 -Dpackaging=jar

mvn install:install-file -Dfile=kettle-core-9.3.0.0-428.jar -DgroupId=pentaho-kettle -DartifactId=kettle-core -Dversion=9.3.0.0-428 -Dpackaging=jar

mvn install:install-file -Dfile=kettle-engine-9.3.0.0-428.jar -DgroupId=pentaho-kettle -DartifactId=kettle-engine -Dversion=9.3.0.0-428 -Dpackaging=jar

mvn install:install-file -Dfile=pentaho-encryption-support-9.3.0.0-428.jar -DgroupId=org.pentaho -DartifactId=pentaho-encryption-support -Dversion=9.3.0.0-428 -Dpackaging=jar

mvn install:install-file -Dfile=js-1.7R3.jar -DgroupId=org.mozilla -DartifactId=javascript -Dversion=1.7R3 -Dpackaging=jar

※目前進度卡在載入plugin失敗,仍無法克服。

※而且考量此整合方式如同再造一台Kettle AP主機,並且需自行開發與Carte Server的API查詢Job狀態相同的功能,故就此打住不再繼續研究。

※成功經驗的先進網友xuanbo的代碼倉庫

2022年11月16日 星期三

Kettle Spoon在Linux主機執行相關設定

因為Kettle目前仍不能像VSCode或Intellij等軟體使用WSL2執行並除錯,
為彌平開發環境(Windows)與部署環境(Linux)的差異,
決定將開發區移至另一台與部署環境設定相同的Linux主機。

1.安裝Java(推薦使用SDKMAN)

2.安裝Kettle(注意事項)

3.安裝Fcitx中文輸入法

4.Linux安裝Xfce桌面(教程)

5.安裝遠端桌面Xrdp(教程)

效果圖:




※2023/03/14更新,Windows 10組建 19044+已可執行Kettle GUI程式,

建立程式捷徑如下:

> <wslg.exe路徑> (--user <使用者帳號>) -- <spoon.sh路徑>

※2023/04/25更新,WSLg程式中文字型顯示亂碼,可安裝Windows字型

在WSL2命令列執行指令如下:

$ sudo ln -s /mnt/c/Windows/Fonts /usr/share/fonts/truetype/windows
$ fc-cache -fv

參考來源:https://github.com/microsoft/wslg/issues/9#issuecomment-835320480

※2024/05/22更新,WSLg安裝中文輸入法

在WSL2命令列執行指令如下:
$ sudo apt install fcitx # 中文輸入法
$ sudo apt install fcitx-table-cangjie3 # 倉頡第3代
$ sudo apt install fcitx-chewing # 新酷音

編輯/etc/locale.gen

取消註解 zh_TW.UTF-8 UTF-8

編輯~/.profile
新增以下設定
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS=@im=fcitx
export DefaultIMModule=fcitx
fcitx-autostart &>/dev/null

套用設定
$ source ~/.profile

參考來源:https://www.80shihua.com/archives/2994

2022年6月22日 星期三

Kettle注意事項

1.Spoon編輯器的啟動script(Spoon.bat/spoon.sh)下面這行最後面要加上UTF-8("-Dfile.encoding=UTF-8"),不然當ETL排程工作名稱含有中文字將無法開啟。

if "%PENTAHO_DI_JAVA_OPTIONS%"=="" set PENTAHO_DI_JAVA_OPTIONS="-Xms1024m" "-Xmx2048m" "-XX:MaxPermSize=256m" "-Dfile.encoding=UTF-8"

2.寫入資料庫發現如果文字型態欄位設非NULL時,當寫入空字串時,會被Kettle轉換成NULL而造成異常。
需在.kettle\kettle.properties 增加一行 KETTLE_EMPTY_STRING_DIFFERS_FROM_NULL=Y 讓空字串保持原狀寫入。
※位置預設在~/.kettle/kettle.properties或在$KETTLE_HOME/.kettle/kettle.properties

3.舊版(2008以前)MSSQL支援,需在lib目錄新增jtds-1.3.1.jar,Database Connection的Connection type需選MS SQL Server
4.如果MSSQL Server只支援舊版TLS,需在Database Connection的Options新增trustServerCertificate=true。

5.Kettle Carte Server支援SSL,修改pwd/carte-config-master-8080.xml

<slaveserver>
    <name>master1</name>
    <hostname>127.0.0.1</hostname>
    <port>8080</port>
    <hostname>(主機位址)</hostname>
    <port>(主機Port)</port>
    <username>(帳號)</username>
    <password>(密碼)</password>
    <master>Y</master>
    <sslConfig>
        <keyStore>(JKS憑證)</keyStore>
        <keyStorePassword>(keyStorePassword)</keyStorePassword>
        <keyPassword>(keyPassword)</keyPassword>
    </sslConfig>
</slaveserver>

6.停止紀錄Kettle log,修改classes/log4j2.xml,註解以下節點即可。

<!--
<RollingFile name="pdi-execution-appender" fileName="logs/pdi.log" filePattern="logs/pdi.%d{yyyy-MM-dd}.log">
    <PatternLayout>
        <Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5p &lt;%t&gt; %m%n</Pattern>
    </PatternLayout>
    <Policies>
        <TimeBasedTriggeringPolicy />
    </Policies>
    <DefaultRolloverStrategy/>
</RollingFile>
-->
7.在/etc/profile.d新增一個<設定檔名>.sh檔用來設定Kettle相關系統變數

export LD_LIBRARY_PATH="" #Kettle連接Oracle客戶端
export NLS_LANG="" #Kettle連接Oracle資料庫字符集
export TNS_ADMIN="" #Oracle客戶端配置文件目錄(如果有的話)
export PENTAHO_JAVA_HOME="" #Kettle用Java JRE/JDK(目前Kettle需要Java 11)
export CLASSPATH="./:$PENTAHO_JAVA_HOME/lib:$LD_LIBRARY_PATH/orai18n.jar" #Kettle引用的JDBC Jar檔
export KETTLE_HOME="" #Kettle路徑
export PATH="$PATH:$LD_LIBRARY_PATH"
變更<設定檔名>.sh檔的權限並生效

$ chmod +x <設定檔名>.sh
$ source <設定檔名>.sh
8.啟動時提示缺少libwebkitgtk-1.0時,需自行安裝

sudo sh -c "echo 'deb http://cz.archive.ubuntu.com/ubuntu bionic main universe' >> /etc/apt/sources.list" && \
sudo apt update -y && apt install -y libwebkitgtk-1.0-0
參考來源: