kettle脚本调度
2014-09-14 13:25
232 查看
本周项目上用到了kettle并且需要做任务调度,听老师说用kettle自带的调度不大稳定于是便baidu了下,参照这篇文章完成了通过kitchen的调度,简单说就是通过windows的计划任务来调用.bat的批处理文件来开始kettle作业。 转自:http://hi.baidu.com/phplinuxmysql/item/f5885685d2397b1cc31627e6 先普及一点知识 Kettle是一个开源的ETL(Extract-Transform-Load的缩写,即数据抽取、转换、装载的过程)项目,项目名很有意思,水壶。按项目负责人Matt的说法:把各种数据放到一个壶里,然后呢,以一种你希望的格式流出。Kettle包括三大块: Spoon——转换/工作(transform/job)设计工具 (GUI方式) Kitchen——工作(job)执行器 (命令行方式) Span——转换(trasform)执行器 (命令行方式) Kettle是一款国外开源的etl工具,纯java编写,绿色无需安装,数据抽取高 效稳定。Kettle中有两种脚本文件,transformation和job,transformation完成针对数据的基础转换,job则完成整个工作流的控制。 因为最近工作需要所以不得不研究下调用kitchen.bat后面接参数的问题。 经过一段时间的研究终于知道传参的方法了。 如下: kitchen.bat 后面可以是-也可以是/然后再加options Options: /rep : Repository name /user : Repository username /pass : Repository password /job : The name of the job to launch /dir : The directory (dont forget the leading /) /file : The filename (Job XML) to launch /level : The logging level (Basic, Detailed, Debug, Rowlevel, Error, Nothing) /logfile : The logging file to write to /listdir : List the directories in the repository /listjobs : List the jobs in the specified directory /listrep : List the available repositories /norep : Do not log into the repository /version : show the version, revision and build date /param : Set a named parameter <NAME>=<VALUE>. For example -param:FOO=bar /listparam : List information concerning the defined parameters in the specified job. /export : Exports all linked resources of the specified job. The argument is the name of a ZIP file. 而options 后面可以是=也可以是:也可以是空格 kitchen.bat /file d:\ 或者 -file=D:\ 或者/file:D:\等等都可以。。。 定时执行的代码参考如下【原创】,可以执行的实例 1、windows下的执行方式: 建立一个mysql.dat的文件,里面写入 cd D:/Kettle-3.0.2 kitchen.bat /norep -file=D:/kettledata/mysal2orcle.kjb >> kitchen_%date:~0,10%.log exit 保存文件。 解释一下上面的语句 cd D:/Kettle-3.0.2 这句的含义是跳转到kettle的根目录,因为kitchen.bat 文件在根目录下 kitchen.bat /norep -file=D:/kettledata/mysal2orcle.kjb >> kitchen_%date:~0,10%.log 上面的含义是,使用kitchen.bat 命令来执行job文件,job文件的存放路径是D:/kettledata/mysal2orcle.kjb,并且将执行的结果输出到 kitchen_%date:~0,10%.log文件中。 2、linux下的书写格式: 创建mysqldb.sh 内容如下 cd /home/Kettle-3.0.2 这句的含义是跳转到kettle的根目录,因为kitchen.bat 文件在根目录下 ./kitchen.sh -file=/home/etl/mysql.kjb >> /home/etl/log/kettle.log 然后这个文件在crontab中去执行 注意:linux执行shell过程中,由于linux对权限要求很严格,所以kitchen.sh必须有可执行的权限。前面必须加上./,也就是./kitchen.sh才能执行,否则会提示找不到此命令。 kitchen.bat的使用方法: Kitchen.bat /file:D:\job_name.kjb /level:Basic>>D:\etl.log 使用心得: 1.file和level都是前面有‘/’,后面有‘:’,任何一个都不能丢。 2.此语句要在一行上完成,中间不能有换行符之类的。 博主从昨天就开始调试的几个bat文件,始终不能在我指定的文件里面记日志,一直在dos界面记录,苦思不得其果,偶然的一个把bat文件全屏之后,发现原来语句被换行了,修改到同一行之后可以顺利的运行。 3.此语句后面不能接任何语句,就算你在bat文件里面添加了别的语句,也不会得到执行,查阅了好多资料,没有发现解决办法,逼不得已,我只能把job做成了一个一个单独的bat文件,这个有点儿杯具。 4.JDK或者JRE很重要。 博主因为服务器上没有配置java环境,吃了不少苦。 先是没装java环境,无法运行kettle;接着装好了java环境之后,job和转换可以正常运行,但是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 不写日志 嗯,居然不支持调度。看了一下文档,建议使用操作系统提供的调度器来实现调度,比如:Windows可以使用它的任务计划工具。 |
相关文章推荐
- kettle中Excel及脚本的使用
- Kettle的执行sql脚本的组件
- 开源作业调度工具实现开源的Datax、Sqoop、Kettle等ETL工具的作业批量自动化调度
- nohup后台运行Python调度脚本(最终发布)
- Kettle之【执行SQL脚本】控件用法
- Kettle实现SQL Server数据到GreenPlum的每日同步调度
- 转:kettle中调度kitchen.bat后面接参数,写定时更新任务
- 调度kettle使用taskctl我该怎么部署
- kettle 中JAVA脚本的使用
- kettle在linux和win的调度
- Windows计划任务调度Python脚本写NFS远程目录异常
- kettle脚本模板
- Kettle调度和监控
- kettle系列-我的开源kettle调度、管理平台[kettle-manager]介绍
- Windows调度Kettle任务
- 【4】Kettle中嵌入Sql脚本、Java、JS
- 解决kettle调度效率低,不可高并发调度方法
- 5步上手体验kettle快捷调度方式
- 使用At命令调度脚本的执行排程参考v1.0
- kettle 使用java脚本连接获取数据库中的值