当前位置:   article > 正文

Linux部署kettle并设置定时任务_kettle linux

kettle linux

一.安装Kettle

linux中使用kettle时首先需要jdk环境,这里就不概述linux中jdk的安装与配置了。

1.首先将kettle压缩包放入linux并解压

unzip data-integration.zip

1693988386619

kettle安装路径为:/root/Kettle9.3/data-integration

设置权限

chmod -R 755 /root/Kettle9.3/data-integration

2.执行命令查看kitchen版本

linux中执行作业时使用kitchen;执行转换使用pan

出现以下界面则表示安装成功

1693988596739

3.配置资源库

kettle在linux中会存在一个隐藏文件夹其中存放了一些配置文件。

cd ~

查看隐藏文件,会看到一个.kettle文件夹

ls -a

image-20230906162625372

1693988831257

其中repositories.xml即为资源库配置文件。当你linux文件夹中不存在以上图片中的文件时。

便需要在windows中的C:\Users\电脑用户名称\.kettle 中将文件复制到linux即可。

repositories.xml配置如下所示:

1693988996558

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <repositories>
  3.  <repository>    
  4.    <id>KettleFileRepository</id>
  5.    <name>YNSOURCE</name>
  6.    <description>File repository</description>
  7.    <is_default>true</is_default>
  8.    <base_directory>/root/Kettle9.3/kettleData</base_directory>
  9.    <read_only>N</read_only>
  10.    <hides_hidden_files>N</hides_hidden_files>
  11.  </repository>  
  12. </repositories>      

base_directory:便是本地资源库地址(需要将作业和转换都放置到该目录下)

name:资源库名称(后续在执行作业时需要用到)

二.设置环境变量

设置环境变量: 在/etc/profile文件中添加以下配置:

/root/Kettle9.3/data-integration 为linux中kettle的安装路径,第一步中已表明

  1. export KETTLE=/root/Kettle9.3/data-integration
  2. export PATH=${KETTLE}:$PATH

然后查看设置的环境变量

echo $PATH

保存设置

source /etc/profile

三.执行作业

需要先创建一个作业并将其放入资源库地址中。(作业中包含的转换等同时放入)

如果存放数据库文件设置的话也需要放入。

执行语句:

./kitchen.sh -rep YNSOURCE -user admin -pass admin -file=/root/Kettle9.3/kettleData/ceshi.kjb

1693989458684

YNSOURCE:资源库名称

-user admin -pass admin:资源库的账号密码,未设置便使用该语句即可(默认账号密码)

/root/Kettle9.3/kettleData/ceshi.kjb:作业地址

回车执行即可。

当出现ERROR: Kitchen can't continue because the job couldn't be loaded.报错时不用理会等待继续执行即可

image-20230906163918974

四.设置定时任务

采用了crontab来进行定时任务的设置。

因此需要编写一个执行kettle作业的脚本

1.创建脚本

vim run_kettle_job.sh

2.编写脚本内容

  1. #!/bin/bash
  2. cd /root/Kettle9.3/data-integration
  3. ./kitchen.sh -rep YNSOURCE -user admin -pass admin -file=/root/Kettle9.3/kettleData/ceshi.kjb

3.设置权限

chmod -R 755 run_kettle_job.sh

4.打开crontab

crontab -e

5.设置定时任务

0 * * * * bash /root/Kettle9.3/run_kettle_job.sh

ae343cd5b2ea63effe5ed63a7f43bd3

6.查看定时任务

crontab -l

五.常见问题 

1.路径问题

        本人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后即可。

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/在线问答5/article/detail/860645
推荐阅读
相关标签
  

闽ICP备14008679号