Macbook M1 安装PDI(Kettle) 9.3

news2024/11/18 11:31:24

Macbook M1 安装PDI(Kettle) 9.3

当前 PDI(Kettle)最新版为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/?version=java-11-lts&os=macos&architecture=x86-64-bit&package=jdk
说明:必须选择 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命令,来启动 spoon(kettle的图形化界面)。

创建简单的spoon启动脚本

可以创建一个 start_spoon.sh 命令文件,进行快速启动。
文件内容示例:

# check if current arch is i386, quit if not.
a=`arch`
if [ $a != "i386" ];then
    echo "Current Arch is not x86, please use Terminal(Intel) to run the program!"
    exit
fi

echo "Starting Kettle Spoon..."
nohup sh /***/data-integration/spoon.sh >/dev/null 2>&1 &

首先,检查 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 ]]; then
        echo "该${KJB_NAME}.kjb在${KETTLE_PATH}/jobs/下不存在!"
        exit 1
    fi
}
 
## 检查程序是否在运行
is_running(){
    pid=`ps -ef|grep ${KJB_NAME}.kjb|grep -v grep|awk '{print $2}'`
}
 
## 启动方法
start(){
    is_exist
    is_running
    echo "pid=${pid}"
    if [[ -z "${pid}" ]]; then
        nohup ${KETTLE_PATH}/data-integration/kitchen.sh -file=${KETTLE_PATH}/jobs/${KJB_NAME}.kjb >> ${KETTLE_PATH}/logs/${KJB_NAME}.log 2>&1 &
        echo "${KJB_NAME} start success!"
    else
        echo "${KJB_NAME} is already running."
    fi
}
 
## 关闭方法
stop(){
    is_running
    if [[ -z "${pid}" ]]; then
        echo "${KJB_NAME} is not running!"
    else
        echo "${KJB_NAME}, Trying to kill the pid=${pid}."
        kill -9 ${pid}
        echo "${KJB_NAME} stop success!"
    fi
}
 
## 重启方法
restart(){
     stop
     start
}
 
## 启动方法
status(){
    is_exist
    is_running
    echo "pid=${pid}"
    if [[ -z "${pid}" ]]; then
        nohup ${KETTLE_PATH}/data-integration/kitchen.sh -file=${KETTLE_PATH}/jobs/${KJB_NAME}.kjb >> ${KETTLE_PATH}/logs/${KJB_NAME}.log 2>&1 &
        echo "${KJB_NAME} start success!"
    else
        echo "${KJB_NAME} is already running."
    fi
}
 
if [[ $# -lt 2 ]]; then
	usage
fi
 
case $1 in
	"start")
		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/]
	Can't load library: /Users/xxx/.swt/lib/macosx/aarch64/libswt-cocoa-4956r13.jnilib
	Can't load library: /Users/xxx/.swt/lib/macosx/aarch64/libswt-cocoa.jnilib
	Can't load library: /Users/xxx/.swt/lib/macosx/aarch64/libswt.jnilib
	Can't 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/375472.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

骨传导蓝牙耳机排行,盘点几款性能不错的骨传导耳机

随着蓝牙耳机的普及,骨传导耳机也越来越受到欢迎,很多人也都开始在了解并尝试骨传导耳机。相比于其他类型耳机,在舒适度、安全方面有一定优势。尤其是在户外运动时,或者长时间佩戴运动时,使用骨传导耳机可以避免耳朵因…

从“入门”到“专家”,一份3000字完整的性能测试体系的知识分享

随着科技的飞速发展,软件产品广泛应用于各个行业领域,人们对计算机和网络的依赖性越来越大,对新奇事物也越来越感兴趣,成千上万的用户活跃在庞大的网络系统中,这给提供服务的系统带来严重的负荷,"高并…

QT之图形视图框架概述——Graphics View Framework

QT之图形视图框架概述——Graphics View Framework1. 概述2. 核心类3. 事件传递4. Graphics View 坐标系统5. 参考1. 概述 Graphics View Framework是子Qt 4.2引入的,用来取代之前版本中的QCanvas。Graphics View Framework提拱了用于大量2D图形项的管理和交互的能…

Spring Boot 统一功能处理(用户登录权限效验-拦截器、异常处理、数据格式返回)

文章目录1. 统一用户登录权限效验1.1 最初用户登录权限效验1.2 Spring AOP 统一用户登录验证1.3 Spring 拦截器1.4 练习:登录拦截器1.5 拦截器实现原理1.6 统一访问前缀添加2. 统一异常处理3. 统一数据格式返回3.1 统一数据格式返回的实现3.2 ControllerAdvice 源码…

day21_IO

今日内容 上课同步视频:CuteN饕餮的个人空间_哔哩哔哩_bilibili 同步笔记沐沐霸的博客_CSDN博客-Java2301 零、 复习昨日 一、作业 二、File 三、IO流 四、字节输入&输出流 零、 复习昨日 见晨考 一、作业 见答案二、File 2.1 介绍 File,通过一个路径代表文件或者文件夹 …

Panda Farm:首个部署在 Arbitrum 上的轻量化 GameFi 游戏

在2月16日,Bitget平台宣布 Launchpad 重新启动,并推出了重启后的首个项目 Panda Farm(BBO),该 Launchpad 启动后得到了较高的关注。 Panda Farm 是部署在 Arbitrum 上的 GameFi应用,这可能首先意味着 Bitge…

技术干货 | Modelica建模秘籍之状态变量

在很多领域都有“系统”这个概念,它描述的往往是一些复杂关系的总和。假如我们将系统看做一个黑箱,那么,在系统的作用下,外界的输入有时会产生令人意想不到的输出,“蝴蝶效应”就是其中的典型案例。图1 一只南美洲亚马…

RPC编程:RPC框架设计目标

一:前导知识 Http是超文本传输协议,跨平台性非常好。Http可以传输文本,更多的时候传输的是文本,我们也是可以传输二进制的,我们基于Http进行下载的时候,就是走的Http协议。 Tcp协议,处理的时候…

OpenShift 4 - 使用辅助安装器安装单节点 OpenShift

文章目录单节点 OpenShift 和 OpenShift 辅助安装器单节点 OpenShiftOpenShift 辅助安装器使用辅助安装器安装单节点 OpenShift本文使用的安装环境准备环境在宿主机上安装 KVM 环境创建 SSH 证书根据集群配置,用辅助安装器生成 Discovery ISO用 Discovery ISO 启动 …

SpringBoot整合(五)HikariCP、Druid数据库连接池—多数据源配置

在项目中,数据库连接池基本是必不可少的组件。在目前数据库连接池的选型中,主要是 Druid ,为监控而生的数据库连接池。HikariCP ,号称性能最好的数据库连接池。 在Spring Boot 2.X 版本,默认采用 HikariCP 连接池。而…

黑客入门教程(非常详细)从零基础入门到精通,看完这一篇就够了

这篇文章没有什么套路。就是一套自学理论和方向,具体的需要配合网络黑白去学习。毕竟是有网络才会有黑白! 有自学也有培训! 1.打死也不要相信什么分分钟钟教你成为大黑阔的,各种包教包会的教程,就算打不死也不要去购买那些所谓的…

【C语言每日一题】判断字符串旋转结果(附加字符串左旋详解)

【C语言每日一题】—— 判断字符串旋转结果😎😎😎 目录 💡前言🌞: 💛字符串左旋题目💛 💪 解题思路的分享💪 😊题目源码的分享&#x1…

Aspose.Slides for .NET 授权须知

Aspose.Slides是一款用于生成,管理和转换PowerPoint幻灯片的本机API,可以使用多种格式,而不需要Microsoft PowerPoint。并且可在任何平台上操作PowerPoint演示文稿。 Aspose.Slides for .NET是一款.NET PowerPoint管理API,用于读…

资产设备防拆标签安全防护和资产定位解决方案

随着社会经济的发展和高新技术的日新月异,对各方面的安全要求也在不断地提高,以物联网安防、入侵报警和出入口控制、应急系统等为主的安全防范系统日益成为各类文物场所智能化弱电工程不可或缺的组成部分,是重点资产管理场所内加强管理和安全…

spring源码编译

spring源码编译1、安装gradle2、拉取源码3、配置gradle文件来源及镜像仓库4、预编译5、验证6、可能遇到的报错6.1、jdk.jfr不存在6.2、checkstyleMain6.3、org.gradle.api.artifacts.result.ComponentSelectionReason.getDescription()Ljava/lang/String6.4、其他jdk&#xff1…

做「增长」必须懂的6大关键指标

无论你所从事的是哪个行业,增长都不是一件易事,SaaS公司想要维持长期的增长更是难上加难。这是因为SaaS公司对未来回报的依赖程度更大,反观那些传统商业模式的公司,主要的收入来源都集中在产品购买交付的时点上,而客户…

统计数据资源整理:最全中国2010年人口普查数据Excel文件

很多小伙伴在做数据分析项目时找不到数据,这里分享我从《国家统计局官网》下载的2010年人口普查数据,总共434个Excel文件,全部整理好啦。 数据仅供学习交流使用 获取方法 链接:https://pan.baidu.com/s/1gfXLg5e8hxNeit3IBA17sA…

西电面向对象程序设计核心考点汇总(期末真题)

文章目录前言一、往年真题与答案1.1 改错题1.2 读程题1.3 面向对象程序设计二、易错知识点2.1 构造函数2.2 静态成员变量和静态成员函数2.3 权限2.4 继承2.5 多态总结前言 主要针对西安电子科技大学《面向对象程序设计》的核心考点进行汇总,包含总共8章的核心简答。…

推荐四款自用的电脑神器

作为一个经常鼓捣电脑的小编来说,无论是写文章、截图、办公方面都缺少不了一些好用的软件,今天就给大家盘点一些我推荐用的办公效率工具,让你的效率事半功倍。 写文章神器 以前写文章一直是在公众号编辑上直接写的,缺点就是格式有…

27K测试老鸟分享自己6年面试心得,四种公司、四种问题…

这里总结了下自己今年的面试情况 先说一下自己的个人情况,普通二本计算机专业毕业,懂python,会写脚本,会selenium,会性能。趁着金三银四跳槽季,面试字节跳动测试岗技术面都已经过了,本来以为是…