Macbook M1 安装PDI(Kettle) 9.3

news/2024/4/20 15:21:59/文章来源:https://blog.csdn.net/pierre_/article/details/129245207

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" ];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 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 ]]; thenecho "该${KJB_NAME}.kjb在${KETTLE_PATH}/jobs/下不存在!"exit 1fi
}## 检查程序是否在运行
is_running(){pid=`ps -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 2>&1 &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 2>&1 &echo "${KJB_NAME} start success!"elseecho "${KJB_NAME} is already running."fi
}if [[ $# -lt 2 ]]; thenusage
ficase $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.jnilibCan't load library: /Users/xxx/.swt/lib/macosx/aarch64/libswt-cocoa.jnilibCan't load library: /Users/xxx/.swt/lib/macosx/aarch64/libswt.jnilibCan'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.luyixian.cn/news_show_74875.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【YOLO系列】YOLOv4论文超详细解读1(翻译 +学习笔记)

前言 经过上一期的开篇介绍,我们知道YOLO之父Redmon在twitter正式宣布退出cv界,大家都以为YOLO系列就此终结的时候,天空一声巨响,YOLOv4闪亮登场!v4作者是AlexeyAB大神,虽然换人了,但论文中给出…

【Project】项目管理软件学习笔记

一、前言使用Project制定项目计划步骤大致如下:以Project2013为例,按照上图步骤指定项目计划。二、实施2.1 创建空白项目点击文件——新建——空白项目,即完成了空白项目的创建,在此我把该项目保存为60mm项目管理.mpp,…

内存保护_2:RTA-OS内存保护逻辑及配置说明

上一篇 | 返回主目录 | 下一篇 内存保护_2:RTA-OS内存保护逻辑及配置说明3 OS配置说明3.1 OS一些基本概念及相互关系3.1.1 基本概念3.1.2 相互关系3.2 内存保护基本逻辑(RTA-OS)3.2.1 应用集的基本分类3.2.2 内存保护与应用集的关系3.3 OS等级…

【python】条件语句,简单理解

嗨害大家好鸭!我是小熊猫~ Python 条件语句 Python条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块。 可以通过下图来简单了解条件语句的执行过程: 更多python资料获取:点击此处跳转文末名片获取 Python程序语言…

“华为杯”研究生数学建模竞赛2006年-【华为杯】A题:Ad Hoc 网络中的区域划分和资源分配问题(附获奖论文)

赛题描述 Ad Hoc网络是当前网络和通信技术研究的热点之一,对于诸如军队和在野外作业的大型公司和集团来说,Ad Hoc网络有着无需基站、无需特定交换和路由节点、随机组建、灵活接入、移动方便等特点,因而具有极大的吸引力。 在Ad Hoc网络中,节点之间的通信均通过无线传输来完…

【Yolov5】保姆级别源码讲解之-推理部分yolo.py文件

yolo.py文件讲解1.参数部分2.创建模型2.1 第一部分 加载配置文件YOLOv5 detection model2.2 第二部分 是通过加载的配置文件进行网络搭建,每一层Define model2.3 第三部分 对网络的步长进行了处理 Build strides, anchors2.4 第四部分对网络进行初始化 Init weights…

Java还值得选择吗?

自1995年Java问世,到2023年已经差不多存在了28年。作为高级编程语言,他的生命周期相比很多编程语言都长,也见证了很多编程语言的辉煌时刻,不过Java始终都是名列前茅。 Java的主要优势在于其一次编写、随处运行。简单来讲&#xf…

Windows10 把两张图片合并成一张图片

Windows10把两张图片合并成一张图片 文章目录Windows10把两张图片合并成一张图片1. 背景2. "画图"实现多图拼接1. 背景 相比截图功能,在 Google 的 Chrome 浏览器上,整页截屏功能仍需要安装额外的插件才能完成,这一点 微软的 bing…

只会手工测试,裸辞后怎么才能找到工作

我们可以从以下几个方面来具体分析下,想通了,理解透了,才能更好的利用资源提升自己。 一、我会什么? 先说第一个我会什么?第一反应:我只会功能测试,在之前的4年的中我只做了功能测试。内心存在…

Qt5的不同IDE的编码支持中文的问题记录

目录 1. IDE环境设置 1.1 IDE是Qt Creator 1.2 IDE是Visual Studio 1.3 编译器是MSVC 2. 源码文件main函数入口设置中文编码: 1. IDE环境设置 1.1 IDE是Qt Creator 环境设置为“UTF8Bom”编码。 1.2 IDE是Visual Studio 下载插件,名称是ForceUTF…

【C语言】自定义类型:结构体、枚举、联合

目录 1.结构体 1.1结构体类型 1.2结构体的自引用 1.3结构体的初始化 1.4结构体内存对齐 //对齐 //offsetof //修改默认对齐数 1.5结构体传参 2.位段 2.1位段的内存开辟 2.2位段的内存分配 3.枚举 4.联合(共用体) //判断大小端 1.结构体…

广泛运用在工业、轨道交通、监狱的ip对讲终端

ip网络对讲系统是不同于传统广播、调频寻址广播和数控广播的产品,它是基于IP数据网络,将音频信号经过数字编码以数据包形式按TCP\IP协议在局域网或广域网上传送,再由终端解码的纯数字化单向,双向及多向音频扩声系统。 本产品是新一…

2023前端二面经典手写面试题

实现一个call call做了什么: 将函数设为对象的属性执行&删除这个函数指定this到函数并传入给定参数执行函数如果不传入参数,默认指向为 window // 模拟 call bar.mycall(null); //实现一个call方法: Function.prototype.myCall function(context…

LLaMA-META发布单卡就能跑的大模型

2023年2月25日,Meta使用2048张A100 GPU,花费21天训练的Transformer大模型LLaMA开源了。 1.4T tokenstakes approximately 21 days 以下是觉得论文中重要的一些要点 1)相对较小的模型也可以获得不错的性能 研究者发现在给定计算能力限制的情…

《高性能MySQL》读书笔记(下)

目录 Mysql查询性能的优化 慢查询基础 优化数据访问 是否向数据库请求了不需要的数据 查询了不需要的记录 多表联查中返回全部列 MySQL是否在扫描额外的记录 重写查询的方式 切分查询(重点) 分解连接查询(重点) MySQL如…

史上最全的大数据开发八股文【自己的吐血总结】

自我介绍 我本硕都是双非计算机专业,从研一下开始学习大数据开发的相关知识,从找实习到秋招,我投递过100公司,拿到过10的offer,包括滴滴、字节、蚂蚁、携程、蔚来、去哪儿等大厂(岗位都是大数据开发&#…

算法练习(七)数据分类处理

一、数据分类处理 1、题目描述: 信息社会,有海量的数据需要分析处理,比如公安局分析身份证号码、 QQ 用户、手机号码、银行帐号等信息及活动记录。采集输入大数据和分类规则,通过大数据分类处理程序,将大数据分类输出…

喜讯!华秋电子荣获第六届“蓝点奖”十佳分销商奖

2 月 25 日,由深圳市电子商会主办的2023 中国电子信息产业创新发展交流大会暨第六届蓝点奖颁奖盛典在深圳隆重举行。 图:华秋商城渠道总监杨阳(右三) 深圳市电子商会连续六年举办“蓝点奖”评选活动,旨在表彰对电子信…

高端电器新十年,求解「竞速突围」

竞争激烈的高端电器品牌们,平时王不见王,但也有例外。海尔、博西、海信、创维、方太、老板等等近乎中国电器行业所有一线品牌副总裁级别以上高层,2月22日都现身于上海,来参加一场由红星美凯龙攒起来的高端电器局,2023中…

能在软路由docker给部署搭建teamsperk服务器么?并且设置好ddns

参考链接(4条消息) 【个人学习总结】使用docker搭建Teamspeak服务器_blcurtain的博客-CSDN博客_teamspeak3 docker(⊙﹏⊙)哎呀,崩溃啦! (tdeh.top)TeamSpeak服务器搭建与使用 - 缘梦の镇 (cmsboy.cn)Openwrt X86 docker运行甜糖-软路由,x86系统,openwrt…