ETL简单的操作以及开发方式记录(KETTLE)三

我们这个ETL的制作往往是为了我们数据的转移,但是有时候我们要的不仅仅是数据转移,很多地方我们需要的数据同步,比如每五分钟同步用户数据之类的,这种在多系统协作的一个公司应用中还是经常出现的。

所以我们就要想一个办法,让他能够没多少时间进行自动的执行,使得我们不至于每五分钟去手动执行一次。

接下来的内容,首先我们要解决两个问题一,在没有人的条件下怎么自动执行ETL,二,我们怎么控制定时执行。

这个时候操作系统给我们提供了一个非常完善的方式,通过脚本执行ETLwindows系统下为.batlinux下为.sh,两个操作系统都给我们提供了比较完善的定时任务的设置方式,在windows下面图形化界面下,想必大家都是非常熟悉控制面板这个东西了吧,我们在windows的控制面板下面有个选项就是定时计划,我们可以在那里进行设置,在linux下面的crontab进行设置。具体的例子下面会给出来,但是例子仅以windows为例(抱歉对于.sh的掌握还不行)。

接下来我们要将我们的转换放到我们可以通过脚本进行执行的方式,然后我们就需要创建一个kettle的一个其他的新建类型Job


我们新建一个Job之后我们会发现我们的左边的控件框也是不同的,我们需要的创建一个JOB的从开始到结束的过程,所以我们先建立一个开始节点以及一个结束的节点,具体的方法和之前的转换新建控件的方法并没有什么不同,通过拖动控件就可以将控件新建到我们的JOB上面去了


然后我们这个JOB之中需要执行的内容是什么,是我们的测试变化,所以我们就是要在其中添加一个新的转换,当然我们要通过SHIFT加鼠标规定其执行的顺序,在这里显而易见我们从开始出发进行具体的任务执行,到了最后我们到达成功节点(完成)。


接下来我们要设置我们这个转换,使得它和我们之前的测试转化相互关联,我们双击打开我们的转化


一般来说简单的JOB不需要设置太多的选项,只要在这个Transformation  filename里面进行关联就可以了,我们设置好的路径如下,在这里我们的kjb(job文件)和我们的ktr(转换文件)放到同一个文件夹下面.

\

然后我们可以在job的页面测试能不能正确的调用到我们的ktr我们尝试运行一下我们的job,下面会依次显示我们的任务的执行顺序以及每一个的执行情况,在这里我们成功的执行了这个转换


接下来我们要通过脚本来调用到这个,这个时候我就没法进行详细的解释了,总之通过这样的.bat脚本设置我们才能通过脚本调用到我们的kjb然后实现定时的任务(下划线部分是我们需要设置的在每个环境不同的特异性参数).

@echo off

echo RUN...

REM ****** 根据具体情况修改JAVA_HOME路径和ETL_PATH路径

 

set JAVA_HOME=C:\Program Files\Java\jdk1.6.0_45

set PATH=%JAVA_HOME%.;%PATH%

set ETL_PATH=C:\ETL\Kettle3.2

set job_path=C:\ETL\JOBS\

set CLASSPATH=%JAVA_HOME%\lib\*.jar

set CLASSPATH=%CLASSPATH%;%ETL_PATH%\lib\kettle-core.jar

set CLASSPATH=%CLASSPATH%;%ETL_PATH%\lib\kettle-db.jar

set CLASSPATH=%CLASSPATH%;%ETL_PATH%\lib\kettle-engine.jar

FOR %%F IN (%ETL_PATH%\libext\*.jar) DO call :addcp %%F

FOR %%F IN (%ETL_PATH%\libext\JDBC\*.jar) DO call :addcp %%F

FOR %%F IN (%ETL_PATH%\libext\webservices\*.jar) DO call :addcp %%F

FOR %%F IN (%ETL_PATH%\libext\commons\*.jar) DO call :addcp %%F

FOR %%F IN (%ETL_PATH%\libext\web\*.jar) DO call :addcp %%F

FOR %%F IN (%ETL_PATH%\libext\pentaho\*.jar) DO call :addcp %%F

FOR %%F IN (%ETL_PATH%\libext\spring\*.jar) DO call :addcp %%F

FOR %%F IN (%ETL_PATH%\libext\mondrian\*.jar) DO call :addcp %%F

FOR %%F IN (%ETL_PATH%\libext\salesforce\*.jar) DO call :addcp %%F

goto extlibe

:addcp

set CLASSPATH=%CLASSPATH%;%1

goto :eof

:extlibe

set CLASSPATH=%CLASSPATH%;%ETL_PATH%\libswt\runtime.jar

set CLASSPATH=%CLASSPATH%;%ETL_PATH%\libswt\jface.jar

set CLASSPATH=%CLASSPATH%;%ETL_PATH%\libswt\win32\swt.jar


REM ****** 一下部分开始执行具体的命令

java -Xms512m -Xmx1024m org.pentaho.di.kitchen.Kitchen -norep -level Basic -file=%job_path%myJob.kjb >> C:\ETL\JOBS\logs\myJob_%date:~0,4%%date:~5,2%%date:~8,2%.log



以上就是脚本的内容,下划线部分为系统相关变量以及系统内相关JDK等的安装路径,加粗部分为本个任务的相关文件名以及文件的存放路径

最后是我们的定时的设置,在windows上面这个出奇的方便,具体的怎么设置我们可以参考百度经验win7怎么设置定时执行任务,将我们的这个.bat文件设置成为定时任务即可,大概的位置在附件->系统工具->任务计划程序中进行操作


 




  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值