有时候,需要我们建立的转换任务能够定时执行,那么我们需要怎么办呢?

此时,我们需要建立一个job,来让转换定时执行。

操作步骤

一、本地运行

1、运行软件,进入主界面。点击左上角的 文件 → 新建 → 作业(J)新建一个作业(job),并保存,作业的后缀名为kjb

kettle 执行hive时速度很慢 kettle执行job_定时执行

2、点击面板左侧的 核心对象 ,选择 通用文件夹下的 START 和 转换 并把它拖到右侧的编辑区中,按住 shift 画线连接“START” 和“转换”。

kettle 执行hive时速度很慢 kettle执行job_命令行_02

3、双击编辑区的“START”图标,设置定时任务。

kettle 执行hive时速度很慢 kettle执行job_kettle 执行hive时速度很慢_03

4、双击编辑区的“转换”图标,设置要定时执行的转换。

kettle 执行hive时速度很慢 kettle执行job_kettle 执行hive时速度很慢_04

5、点击“Run”,选择“本地执行”,点击“执行”来执行这个转换。

kettle 执行hive时速度很慢 kettle执行job_定时执行_05

kettle 执行hive时速度很慢 kettle执行job_kettle 执行hive时速度很慢_06

kettle 执行hive时速度很慢 kettle执行job_定时执行_07

kettle 执行hive时速度很慢 kettle执行job_命令行_08

二、后台任务运行

前面我们介绍了 Kettle的Spoon的转换和作业定时任务GUI设计方式以及运行,但是在实际应用中,我们需要计划任务是在服务器后台运行。

首先我们需要了解Kettle的Kitchen和Pan
Kitchen——作业(job)执行器 (命令行方式)
Pan——转换(trasform)执行器 (命令行方式)

下面我们将重点讲解经常会用到的 ***作业执行器 Kitchen.bat ***

Kitchen 参数说明:
-rep:Repository name 任务包所在存储名
-user:Repository username 执行人
-pass:Repository password 执行人密码
-job:The name of the job to launch 任务包名称
-dir:The directory (don''t forget the leading / or )
-file:The filename (Job XML) to launch
-level:The logging level (Basic, Detailed, Debug, Rowlevel, Error, Nothing) 指定日志级别
-log:The logging file to write to 指定日志文件
-listdir:List the directories in the repository 列出指定存储中的目录结构。
-listjobs:List the jobs in the specified directory 列出指定目录下的所有任务
-listrep:List the defined repositories 列出所有的存储
-norep:Don''t log into the repository 不写日志

命令行执行配置方式

1、新建一个bat文件,命名job.bat,然后编辑,输入内容如下:

d:                   ## Kitchen.bat所在路径盘符
cd D:\software\Kettle7       ## Kitchen.bat所在目录

## 作业(job)文件路径和日志文件路径
## 执行kitchen执行job,并写入日志
kitchen /file:D:\KettleProject\job2.kjb /level:Base>>D:\KettleProject\test.log

 

注意:确保路径的正确性。

2、双击job.bat,即可运行

后台运行配置方式

我们已经建立了命令行运行的bat文件,并且已经可以正确执行我们的ETL任务了,但是现在我们在运行bat后,桌面上面会一直存在一个控制台的黑窗口,我们可以使用bat命令中的隐藏窗口的命令。

修改我们的job.bat文件

@echo off

if "%1" == "h" goto begin
mshta vbscript:createobject("wscript.shell").run("%~nx0 h",0)(window.close)&&exit
:begin
::

d:                   ## Kitchen.bat所在路径盘符
cd D:\software\Kettle7       ## Kitchen.bat所在目录

## 作业(job)文件路径和日志文件路径
## 执行kitchen执行job,并写入日志
kitchen /file:D:\KettleProject\job2.kjb /level:Base>>D:\KettleProject\test.log

在此双击job.bat运行,我们将不会再看到控制台黑窗口继续保留在桌面上,并且等待设置的间隔时间后,我们可以看到日志文件记录。
···
2017/12/07 16:51:26 - Kitchen - Logging is at level : 基本日志
2017/12/07 16:51:26 - Kitchen - Start of run.
2017/12/07 16:51:31 - job2 - 开始执行任务
2017/12/07 16:51:31 - job2 - job2
2017/12/07 16:53:31 - job2 - 开始项[简单表同步]
2017/12/07 16:53:31 - 简单表同步 - Loading transformation from XML file [file:///D:/KettleProject/TEST2.ktr]
2017/12/07 16:53:31 - 简单表同步 - Using run configuration [Pentaho local]
2017/12/07 16:53:31 - 简单表同步 - Using legacy execution engine
2017/12/07 16:53:31 - TEST2 - 为了转换解除补丁开始 [TEST2]
2017/12/07 16:53:32 - 表输入.0 - Finished reading query, closing connection.
2017/12/07 16:53:32 - 表输入.0 - 完成处理 (I=3, O=0, R=0, W=3, U=0, E=0)
2017/12/07 16:53:32 - 插入 / 更新.0 - 完成处理 (I=3, O=0, R=3, W=3, U=1, E=0)
···

至此,Kettle的定时任务就基本完成了

 


上一章:Kettle入门之三 Kettle应用场景(只增量插入)

下一章:Kettle入门之五 Kettle应用场景(增量插入和更新)