2023年3月13日 星期一
Kettle用Nginx作為反向代理的注意事項
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]
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安裝中文輸入法$ sudo apt install fcitx # 中文輸入法
$ sudo apt install fcitx-table-cangjie3 # 倉頡第3代
$ sudo apt install fcitx-chewing # 新酷音
取消註解 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注意事項
if "%PENTAHO_DI_JAVA_OPTIONS%"=="" set PENTAHO_DI_JAVA_OPTIONS="-Xms1024m" "-Xmx2048m" "-XX:MaxPermSize=256m" "-Dfile.encoding=UTF-8"
2.寫入資料庫發現如果文字型態欄位設非NULL時,當寫入空字串時,會被Kettle轉換成NULL而造成異常。
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 <%t> %m%n</Pattern>
</PatternLayout>
<Policies>
<TimeBasedTriggeringPolicy />
</Policies>
<DefaultRolloverStrategy/>
</RollingFile>
-->
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"
$ chmod +x <設定檔名>.sh
$ source <設定檔名>.sh
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