0


一百六十四、Kettle——Linux上脚本运行kettle的转换任务(Linux本地、Linux资源库)

一、目的

在kettle的转换任务以及共享资源库、Carte服务创建好后,需要对kettle的转换任务用海豚调度器进行调度,调度的前提的写好脚本。所以,这篇博客首先介绍在Linux上脚本运行kettle的转换任务

二、前提准备

(一)我的kettle任务为转换任务ktr,不是作业任务kjb

(二)ktr任务使用pan文件,kjb任务使用的是kitchen文件

注意:两种任务使用两种文件,它们使用是不同的文件

(三)这篇博客是在Linux上脚本运行kettle转换任务,不是在Windows本地脚本运行kettle转换任务

(四)下方这篇博客详细的介绍了转换执行器pan和作业执行器Kitchen的使用方法,所以我这边只展示转换执行器pan的使用方法,如果需要查看作业执行器Kitchen的使用方法,请自行查看下方的博客链接

http://t.csdn.cn/hc6SIhttp://t.csdn.cn/hc6SI

(五)kettle任务已保存到kettle共享资源库的目录文件里

1、在资源库根目录右键——创建新目录,输入目录名,点击🆗

2、在保存kettle任务时,点击要保存到资源库的文件夹下

3、打开资源库的对应文件夹下查看转换1任务是否保存

如图所示,kettle任务样例转换1在资源库的mysql_to_hdfs文件夹下保存成功!

三、转换执行器pan介绍

(一)pan简介

pan是一个转换执行器,专门用来执行kettle的转换任务

(二)pan工具的官网文档

Use Command Line Tools to Run Transformations and Jobs - Hitachi Vantara Lumada and Pentaho Documentation

(三)pan在Linux上执行kettle转换任务命令语句(官网案例)

sh pan.sh -rep=initech_pdi_repo -user=pgibbons -pass=lumburghsux -trans=TPS_reports_2011

(四)pan在Windows本地执行kettle转换任务命令语句(官网案例)

pan.bat /rep:initech_pdi_repo /user:pgibbons /pass:lumburghsux /trans:TPS_reports_2011

(五)pan参数含义(非常重要!非常重要!非常重要!)

序号参数名****参数含义1rep资源库名称2user用户名3pass密码4trans要启动的转换任务的名称5dir资源库目录6file如果调用的是本地ktr文件,则为文件名;如果不在本地目录中,则包括路径7level日志级别(基本、详细、调试、行级别、错误、无)(Basic, Detailed, Debug, Rowlevel, Error, Nothing)8logfile将日志输出写入的本地文件名9listdir列出指定资源库中的文件目录10listtrans列出指定文件目录里的转换任务11listrep列出可用的资源库12exprep将所有存储库对象导出到一个 XML 文件13norep防止 Pan(Kitchen)登录到存储库。如果您已经设置了 KETTLE_REPOSITORY、KETTLE_USER 和 KETTLE_PASSWORD 环境变量,那么这个选项将使您能够阻止 Pan( Kitchen)登录到指定的存储库,假设您要执行本地 KTR 文件14safemode在安全模式下运行,可以进行额外检查15version显示版本、修订和构建日期16param以name=value 格式设置命名参数 。例如: -param:FOO=bar17listparam列出有关指定转换中定义的命名参数的信息18maxloglinesPDI 内部保留的最大日志行数。设置为 0 以保留所有行(默认)19maxlogtimeout由 PDI 内部保留的日志行的最长期限(以分钟为单位)。设置为 0 以无限期地保留所有行(默认)
注释:这19个pan的参数,除了红色标记的3个参数外,其余16个都是pan和kitchen的通用参数

另附kitchen的特有参数

序号参数名参数含义1job要启动的作业任务的名称2listjob列出指定资源库文件夹里的作业任务

(六)pan参数的语句案例

1、listrep(列出可用的资源库)

sh /opt/install/kettle9.2/data-integration/pan.sh -listrep

找到资源库:hurys_linux_kettle_repository

2、listdir(列出指定资源库中的文件目录)

sh /opt/install/kettle9.2/data-integration/pan.sh -rep=hurys_linux_kettle_repository -user=admin -pass=admin -listdir

找到资源库的文件目录hive_to_clickhouse、mysql_to_hdfs

3、listtrans(列出指定文件目录里的转换任务)

sh /opt/install/kettle9.2/data-integration/pan.sh -rep=hurys_linux_kettle_repository -user=admin -pass=admin -dir=/mysql_to_hdfs/ -listtrans

找到文件夹mysql_to_hdfs的转换任务01_MySQL_to_HDFS_t_event_dispose

(七)pan的运行状态码

1、官网文档截图

2、运行状态码及其含义

运行状态码****状态码含义0转换运行没有问题1处理过程中发生错误2加载/运行转换期间发生意外错误3无法准备和初始化此转换7无法从 XML 或存储库加载转换8加载步骤或插件时出错(主要是加载插件之一时出错)9命令行使用打印

四、pan命令语句执行kettle转换任务

(一)在Linux中执行pan命令语句,运行转换任务,没有日志文件

1、在Linux中执行pan命令语句

sh /opt/install/kettle9.2/data-integration/pan.sh -rep=hurys_linux_kettle_repository -user=admin -pass=admin -dir=/mysql_to_hdfs/ -trans=01_MySQL_to_HDFS_t_event_dispose

2、pan命令语句执行结果:转换成功

3、由于kettle任务是从MySQL到HDFS,所以还可以到Hadoop中验证一下文件

(二)在Linux中执行pan命令语句,运行转换任务,导出日志到文件

1、在Linux中执行pan命令语句

sh /opt/install/kettle9.2/data-integration/pan.sh -rep=hurys_linux_kettle_repository -user=admin -pass=admin -dir=/mysql_to_hdfs/ -trans=01_MySQL_to_HDFS_t_event_dispose level=Basic >>/home/log/kettle/01_MySQL_to_HDFS_t_event_dispose_date +%Y%m%d.log

注意:提前创建好日志文件路径/home/log/kettle

2、pan命令语句执行结果:转换成功

3、由于kettle任务是从MySQL到HDFS,所以还可以到Hadoop中验证一下文件

4、由于pan语句导出日志到日志文件,因此可以查看日志文件

到/home/log/kettle路径下找到对应的日志文件,然后vi打开查看

vi 01_MySQL_to_HDFS_t_event_dispose_20230824.log

可以看到日志中,kettle的转换任务执行成功!

五、Linux上脚本运行kettle的转换任务

(一)前提条件

1、Linux上kettle转换任务的存储位置

2、脚本文件存放目录下执行脚本(首先需要对脚本赋权)

脚本赋权后ll查看脚本

(二)不使用资源库,脚本运行Linux本地上的kettle转换任务

1、kettle脚本内容

#!/bin/bash
source /etc/profile

/opt/install/kettle9.2/data-integration/pan.sh -file=/opt/soft/kettle_job/01_mysql_to_hdfs_t_event_dispose.ktr >> /home/log/kettle/01_mysql_to_hdfs_t_event_dispose_date +%Y%m%d.log

2、sh执行脚本(注意 /root/.kettle/里的配置文件,不要有资源库文件)

sh test_no.sh

3、脚本执行结果(执行时间11:09:18)

4、 由于kettle任务是从MySQL到HDFS,所以还可以到Hadoop中验证一下文件

文件时间是11:09

5、 查看11:09 的日志文件

vi 01_MySQL_to_HDFS_t_event_dispose_20230824.log

可以看到日志中,kettle的转换任务执行成功!

(三)使用资源库,脚本运行Linux上的kettle转换任务

1、kettle脚本内容

#!/bin/bash
source /etc/profile

/opt/install/kettle9.2/data-integration/pan.sh -rep=hurys_linux_kettle_repository -user=admin -pass=admin -dir=/mysql_to_hdfs/ -trans=01_MySQL_to_HDFS_t_event_dispose level=Basic >>/home/log/kettle/01_MySQL_to_HDFS_t_event_dispose_date +%Y%m%d.log

2、sh执行脚本(注意 /root/.kettle/里的配置文件,一定要有资源库文件)

sh test1.sh

3、脚本执行结果(执行时间09:53)

4、 由于kettle任务是从MySQL到HDFS,所以还可以到Hadoop中验证一下文件

5、 查看09:53的日志文件

vi 01_MySQL_to_HDFS_t_event_dispose_20230824.log

可以看到日志中,kettle的转换任务执行成功!

到这里,Linux上脚本运行kettle的转换任务就成功了,包括Linux本地和Linux资源库两种!

最要注意是转换任务的执行器pan,它的参数和kitchen是不太一样的。尤其pan的任务参数是trans,而kitchen的任务参数是job

至于在Windows本地执行kettle的转换任务pan命令语句请参考下面博客

http://t.csdn.cn/YGSSzhttp://t.csdn.cn/YGSSz![](https://img-blog.csdnimg.cn/b9c2506b4b0c44e398eac0baad3f9936.png)

乐于奉献共享,帮助你我他!

标签: 大数据 kettle

本文转载自: https://blog.csdn.net/tiantang2renjian/article/details/132456174
版权归原作者 天地风雷水火山泽 所有, 如有侵权,请联系我们删除。

“一百六十四、Kettle——Linux上脚本运行kettle的转换任务(Linux本地、Linux资源库)”的评论:

还没有评论