赞
踩
linux中使用kettle时首先需要jdk环境,这里就不概述linux中jdk的安装与配置了。
unzip data-integration.zip
kettle安装路径为:/root/Kettle9.3/data-integration
设置权限
chmod -R 755 /root/Kettle9.3/data-integration
linux中执行作业时使用kitchen;执行转换使用pan
出现以下界面则表示安装成功
kettle在linux中会存在一个隐藏文件夹其中存放了一些配置文件。
cd ~
查看隐藏文件,会看到一个.kettle文件夹
ls -a
其中repositories.xml即为资源库配置文件。当你linux文件夹中不存在以上图片中的文件时。
便需要在windows中的C:\Users\电脑用户名称\.kettle 中将文件复制到linux即可。
repositories.xml配置如下所示:
- <?xml version="1.0" encoding="UTF-8"?>
- <repositories>
- <repository>
- <id>KettleFileRepository</id>
- <name>YNSOURCE</name>
- <description>File repository</description>
- <is_default>true</is_default>
- <base_directory>/root/Kettle9.3/kettleData</base_directory>
- <read_only>N</read_only>
- <hides_hidden_files>N</hides_hidden_files>
- </repository>
- </repositories>
base_directory:便是本地资源库地址(需要将作业和转换都放置到该目录下)
name:资源库名称(后续在执行作业时需要用到)
设置环境变量: 在/etc/profile文件中添加以下配置:
/root/Kettle9.3/data-integration 为linux中kettle的安装路径,第一步中已表明
- export KETTLE=/root/Kettle9.3/data-integration
- export PATH=${KETTLE}:$PATH
然后查看设置的环境变量
echo $PATH
保存设置
source /etc/profile
需要先创建一个作业并将其放入资源库地址中。(作业中包含的转换等同时放入)
如果存放数据库文件设置的话也需要放入。
执行语句:
./kitchen.sh -rep YNSOURCE -user admin -pass admin -file=/root/Kettle9.3/kettleData/ceshi.kjb
YNSOURCE:资源库名称
-user admin -pass admin:资源库的账号密码,未设置便使用该语句即可(默认账号密码)
/root/Kettle9.3/kettleData/ceshi.kjb:作业地址
回车执行即可。
当出现ERROR: Kitchen can't continue because the job couldn't be loaded.报错时不用理会等待继续执行即可。
采用了crontab来进行定时任务的设置。
因此需要编写一个执行kettle作业的脚本
vim run_kettle_job.sh
- #!/bin/bash
- cd /root/Kettle9.3/data-integration
- ./kitchen.sh -rep YNSOURCE -user admin -pass admin -file=/root/Kettle9.3/kettleData/ceshi.kjb
chmod -R 755 run_kettle_job.sh
crontab -e
0 * * * * bash /root/Kettle9.3/run_kettle_job.sh
crontab -l
本人kettle任务有多个作业,多个作业里又嵌套着作业以及转换,因此在调用这多个作业的时候为了统一管理就将其包在一个作业中。但是将kettle文件从windows放到linux部署运行时,出现了以下路径问题:
Unable to load the job: please specify the name:and repository directory OR
该问题在网络上并没有找到解决方法,但是通过不断的尝试也顺利解决了该问题,因此进行记录。(感觉这是一个kettle的小bug)
(1) 以下图片是报错时,主kettle任务入口的作业。会发现嵌套的子作业使用的是相对路径(正常情况下使用资源库后,kettle会默认在相对路径前拼接资源库地址,从而访问作业或者转换)。
但是目前这样是存在问题的。不过通过尝试后发现kettle在linux中部署时,对于运行作业中的嵌套作业路径并没有做默认处理。也就是说它找job_system是认为路径为/SYSTEM/job_system。当我将其手动修改为linux中的绝对路径时,job_system作业便可以成功运行了(内部嵌套的作业以及转换路径不用修改)。所以说ketle的一个小bug就是主作业中嵌套的子作业地址没有被成功识别。
针对该问题,我在job_indicator外又包了一层作业,从而减少对job_indicator中各子作业路径的修改。然后在脚本中将job_indicator作业修改为job_all后即可。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。