宝塔系统怎么建设网站,天元建设集团电话,ui培训机构设计,建筑设计前景怎么样Macbook M1 安装PDI(Kettle) 9.3
当前 PDI#xff08;Kettle#xff09;最新版为9.3#xff0c;依赖Java JDK 11。因为没有专门用于 M1的程序#xff0c;需要下载并安装x86_64架构的JDK及依赖软件#xff0c;并 “强制在Intel模式下运行shell” 的方式来实现 Kettle 的正…Macbook M1 安装PDI(Kettle) 9.3
当前 PDIKettle最新版为9.3依赖Java JDK 11。因为没有专门用于 M1的程序需要下载并安装x86_64架构的JDK及依赖软件并 “强制在Intel模式下运行shell” 的方式来实现 Kettle 的正常运行。 参考https://indiespark.top/software/run-command-line-apple-silicon/ 配置 Terminal
首先配置一个新的 Terminal 描述文件网上资料一般都命名为“Rosetta当然也可以命名为“Terminal(Intel)”之类只要自己能记住这个描述文件是专门为 x86模式准备的即可。 1、配置“窗口-标题”为“Terminal(Intel)”以易于辨识 2、配置“Shell-启动“勾选“运行命令“填入env /usr/bin/arch -x86_64 /bin/zsh --login取消勾选“在shell中运行”。 然后启动新的 Terminal(Intel)窗口执行 arch 命令如果输出的是i386则表示已经运行在Intel模式下。
安装Java JDK
下载 JDK
首先下载 Java 11本文采用zulu openJDK 11 来代替 Oracle JDK 11。 链接https://www.azul.com/downloads/?versionjava-11-ltsosmacosarchitecturex86-64-bitpackagejdk 说明必须选择 x86 64bit 架构的JDK推荐直接下载dmg格式的文件。 JDK将自动安装在 /Library/Java/JavaVirtualMachines/zulu-11.jdk 目录下。
配置环境变量
打开用户默认目录下的.zprofile 或 .zshrc设置 JAVA_HOME环境变量
export JAVA_HOME/Library/Java/JavaVirtualMachines/zulu-11.jdk/Contents/Home
export PATH$JAVA_HOME/bin:$PATH然后source 配置文件使改动生效。
安装 PDI(Kettle)
官网下载地址 本文下载版本9.3下载完成后解压到指定目录下。
替换 libswt 依赖 jar
接下来要用eclipse提供的SWT图形工具套件适配macos的x86_64版本的来替代 kettle自带的 swt.jar。
首先从maven 下载eclipse最新jar 如下图示 然后替换 kettle 安装 data-integration/libswt/osx64/目录下的swt.jar即可。
启动 kettle
到目前为止所有软件都已就绪。 我们可以打开 Terminal(Intel) 终端窗口切换到data-integration目录下执行sh spoon.sh命令来启动 spoonkettle的图形化界面。
创建简单的spoon启动脚本
可以创建一个 start_spoon.sh 命令文件进行快速启动。 文件内容示例
# check if current arch is i386, quit if not.
aarch
if [ $a ! i386 ];thenecho Current Arch is not x86, please use Terminal(Intel) to run the program!exit
fiecho Starting Kettle Spoon...
nohup sh /***/data-integration/spoon.sh /dev/null 21 首先检查 arch命令输出的是不是 i386。如果是则继续启动过程否则给出提示信息并返回。通过判断 arch输出是否为i386即可判断当前是否“强制在Intel模式下运行Shell”。
然后通过 nohup方式启动 spoon.sh即可。程序启动后自动转入后台执行。
附功能更多的启停脚本
网上找到的Kettle启停脚本适合在服务器端使用相对功能比较完善供参考。
#!/bin/sh
# date 2023-01-03
# kettle启动停止工具脚本KJB_NAME$2
## kettle的父路径
KETTLE_PATH/opt/module/kettle/pdi-ce-8.2.0.0-342## 使用说明用来提示输入参数
usage(){echo Usage: sh 脚本名.sh [start|stop|restart|status|tail] [KJB_NAME]exit 1
}## 检查执行的文件是否存在
is_exist(){if [[ ! -e ${KETTLE_PATH}/jobs/${KJB_NAME}.kjb ]]; thenecho 该${KJB_NAME}.kjb在${KETTLE_PATH}/jobs/下不存在exit 1fi
}## 检查程序是否在运行
is_running(){pidps -ef|grep ${KJB_NAME}.kjb|grep -v grep|awk {print $2}
}## 启动方法
start(){is_existis_runningecho pid${pid}if [[ -z ${pid} ]]; thennohup ${KETTLE_PATH}/data-integration/kitchen.sh -file${KETTLE_PATH}/jobs/${KJB_NAME}.kjb ${KETTLE_PATH}/logs/${KJB_NAME}.log 21 echo ${KJB_NAME} start success!elseecho ${KJB_NAME} is already running.fi
}## 关闭方法
stop(){is_runningif [[ -z ${pid} ]]; thenecho ${KJB_NAME} is not running!elseecho ${KJB_NAME}, Trying to kill the pid${pid}.kill -9 ${pid}echo ${KJB_NAME} stop success!fi
}## 重启方法
restart(){stopstart
}## 启动方法
status(){is_existis_runningecho pid${pid}if [[ -z ${pid} ]]; thennohup ${KETTLE_PATH}/data-integration/kitchen.sh -file${KETTLE_PATH}/jobs/${KJB_NAME}.kjb ${KETTLE_PATH}/logs/${KJB_NAME}.log 21 echo ${KJB_NAME} start success!elseecho ${KJB_NAME} is already running.fi
}if [[ $# -lt 2 ]]; thenusage
ficase $1 instart)echo start kettle_kjb start;;stop)echo stop kettle_kjb stop;;restart)echo restart kettle_kjb restart;;status)echo status kettle_kjb ps -ef|grep ${KJB_NAME}.kjb|grep -v grep;;tail)echo tail kettle_kjb tail -60f ${KETTLE_PATH}/logs/${KJB_NAME}.log;;*)echo Input Args Error...;;
esac遇到的问题
JDK版本问题
在使用非x86版本的 JDK时如果直接执行spoon.sh将会报错
data-integration % sh spoon.sh
java.lang.UnsatisfiedLinkError: Could not load SWT library. Reasons:no swt-cocoa-4956r13 in java.library.path: [./../libswt/osx64/]no swt-cocoa in java.library.path: [./../libswt/osx64/]no swt in java.library.path: [./../libswt/osx64/]Cant load library: /Users/xxx/.swt/lib/macosx/aarch64/libswt-cocoa-4956r13.jnilibCant load library: /Users/xxx/.swt/lib/macosx/aarch64/libswt-cocoa.jnilibCant load library: /Users/xxx/.swt/lib/macosx/aarch64/libswt.jnilibCant load library: /Users/xxx/.swt/lib/macosx/aarch64/libswt-cocoa-4956r13.jnilib这是因为 kettle的图形化依赖 eclipse的 swt图形库并且进而依赖系统的 JDK。一般情况下当前系统是安装的M1版本的JDK这与 x86版本的 Kettle 并不兼容。
需要按照本文提供的地址下载并安装 x64版本的JDK。
参考文档
kettle的下载安装以及问题点 关于M1 Mac 安装部署PDI(kettle)的方法步骤及问题解决 (完美安装无报错)M1 mac 安装kettle