环境准备
系统要求
SUSE Linux Enterprise Server 12 或者centos7 版本过高会有问题,需要适配版本
Java 8 JDK(Kettle 7.1推荐版本)
至少4GB内存(推荐8GB以上)
足够的磁盘空间(建议20GB以上)
Kettle 7.1安装
从Pentaho官方网站或镜像源下载Kettle 7.1的压缩包(pdi-ce-7.1.0.0-12.zip)。
1
| https://github.com/ambientelivre/legacy-pentaho-ce/?tab=readme-ov-file
|
解压安装
1 2 3 4 5 6 7 8 9 10
| # 创建安装目录 sudo mkdir -p /opt/kettle
# 解压到安装目录 sudo unzip pdi-ce-7.1.0.0-12.zip -d /opt/kettle
# 调整权限 sudo chown -R <your_user>:<your_group> /opt/kettle
|
配置与优化
内存配置
编辑$KETTLE_HOME/spoon.sh文件,调整JVM内存参数:
1 2 3 4 5
| bash # 修改内存配置(根据服务器实际内存调整) if [ -z "$PENTAHO_DI_JAVA_OPTIONS" ]; then PENTAHO_DI_JAVA_OPTIONS="-Xms1024m -Xmx4096m -XX:MaxPermSize=256m" fi
|
路径处理
作业和转换文件:确保文件中的路径使用Linux风格的分隔符(/)
资源库配置:如果使用数据库资源库,确保连接字符串正确
文件路径:避免使用绝对路径,优先使用相对路径或环境变量
权限设置
1 2
| # 确保Kettle运行用户对相关目录有读写权限 sudo chmod -R 755 /opt/kettle
|
测试部署
启动Spoon(图形界面)
1 2
| cd /opt/kettle ./spoon.sh
|
运行测试作业
创建一个简单的转换,测试数据提取和加载
运行作业,检查日志是否有错误
Kettle 命令行工具使用
pan.sh
1 2
| ./pan.sh -option1 value1 -option2 value2 ...
|
kitchen.sh
1 2
| ./kitchen.sh -option1 value1 -option2 value2 ...
|
常用参数
1 2 3 4 5 6 7 8 9 10 11
| -file 指定要执行的文件路径 -file=/opt/kettle/jobs/myjob.kjb -trans 指定转换名称(在资源库中) -trans=转换名称 -job 指定作业名称(在资源库中) -job=作业名称 -rep 指定资源库名称 -rep=资源库名称 -user 资源库用户名 -user=admin -pass 资源库密码 -pass=password -param 传递参数(格式:参数名=值) -param:date=2024-01-01 -log 指定日志文件路径 -log=/opt/kettle/logs/job.log -level 指定日志级别(Basic/Detailed/Debug/Rowlevel/Error/Nothing) -level=Debug -norep 不将日志写入资源库 -norep -version 显示版本信息 -version
|
执行本地转换文件(pan.sh)
1 2 3 4 5
| # 进入 Kettle 目录 cd /opt/kettle/data-integration
# 执行转换文件 ./pan.sh -file=/opt/kettle/transformations/sales_data.ktr -log=/opt/kettle/logs/sales_transform.log
|
执行本地作业文件(kitchen.sh)
1 2 3 4 5
| # 进入 Kettle 目录 cd /opt/kettle/data-integration
# 执行作业文件 ./kitchen.sh -file=/opt/kettle/jobs/daily_load.kjb -log=/opt/kettle/logs/daily_load.log
|
传递参数执行作业
1 2
| # 传递日期参数 ./kitchen.sh -file=/opt/kettle/jobs/extract_data.kjb -param:extract_date=2024-01-01 -log=/opt/kettle/logs/extract_20240101.log
|
从资源库执行作业
1 2
| # 从资源库执行作业 ./kitchen.sh -job=DailyETL -rep=Production -user=admin -pass=password -log=/opt/kettle/logs/daily_etl.log
|
后台执行并输出日志
1 2
| # 后台执行作业,将输出重定向到日志文件 nohup ./kitchen.sh -file=/opt/kettle/jobs/nightly_process.kjb -log=/opt/kettle/logs/nightly.log > /dev/null 2>&1 &
|