Kettle定时执行
1,Kettle跨平台使用。
例如:在AIX下(AIX是IBM商用UNIX操作系统,此处在LINUX/UNIX同样适用),运行Kettle的相关步骤如下:
1)进入到Kettle部署的路径
2)执行 chmod *.sh,将所有shell文件添加可执行权限
3)在Kettle路径下,如果要执行transformation,就运行./pan.sh -file=?.ktr -debug=debug -log=log.log
其中。-file说明你要运行的transformation文件所在的路径;-debug说明日志输出的级别;-log说明日志输出的路径
4)同理,对于job的执行,请将./pan.sh更换成./kitchen.sh,其他部分说明不变。
2,Kettle环境变量使用。
在transformation中,Core Objects-->Job-->Set Variables,可以设置环境变量,对于绝对路径和相对路径的转换很有帮助,Kettle的跨平台很大程度依靠它
3,其它功能的使用。
其它功能包括DB存储过程调用,流查询,值映射,聚合记录等,各位自行摸索
4,Kettle定时功能。
在Job下的start模块,有一个定时功能,可以每日,每周等方式进行定时,对于周期性的ETL,很有帮助。
a.使用资源库(repository)登录时,默认的用户名和密码是admin/admin。
b.当job是存放在资源库(一般资源库都使用数据库)中时,使用Kitchen.bat执行job时,需使用如下的命令行:
Kitchen.bat /rep kettle /user admin /pass admin /job job名
c.当job没有存放在资源库而存放在文件系统时,使用Kitchen.bat执行job时,需使用如下的命令行:
Kitchen.bat /norep /file user-transfer-job.kjb
d.可以使用命令行执行job后,就可以使用windows或linux的任务调度来定时执行任务了
e.如果出现异常语句,
Unexpected error during transformation metadata load
No repository defined!
请按上面的操作排除。
5,Kettle经验之日志。
Kettle对于日志的处理,存在一个BUG,看过上一篇的人或许已经看到了我的留言,Kettle对于日志处理有一个BUG,当日志多于49M(不是50M,也不是49M),Kettle就会自动停止,这一点我在源码里面也没有找到对应的设置和约束,原因还找不到,因为是日志没有写,所以原因也不好跟踪还不知道具体原因。
6,Kettle之效率提升。
Kettle作为一款ETL工具,肯定无法避免遇到效率问题,当很大的数据源输入的时候,就会遇到效率的问题。对此有几个解决办法:
1)数据库端创建索引。对需要进行查询的数据库端字段,创建索引,可以在很大程度上提升查询的效率,最多的时候,我不创建索引,一秒钟平均查询4条记录,创建索引之后,一秒钟查询1300条记录。
2)数据库查询和流查询注意使用环境。因为数据库查询为数据输入端输入一条记录,就对目标表进行一次查询,而流查询则是将目标表读取到内存中,数据输入端输入数据时,对内从进行查询,所以,当输入端为大数据量,而被查询表数据量较小(几百条记录),则可以使用流查询,毕竟将目标表读到内存中,查询的速度会有非常大的提升(内存的读写速度是硬盘的几百倍,再加上数据库自身条件的制约,速度影响会更大)。同理,对于目标表是大数据量,还是建议使用数据库查询,不然的话,一下子几百M的内存被干进去了,还是很恐怖的。
3)谨慎使用javascript脚本,因为javascript本身效率就不高,当你使用js的时候,就要考虑你每一条记录,就要执行一次js所需要的时间了。
4)数据库commit次数,一条记录和一百条记录commit对效率的影响肯定是不一样的。
5)表输入的sql语句的写法。有些人喜欢在表输入的时候,将所有关联都写进去,要么from N多个表,要么in来in去,这样,就要面对我在2)里面说道的问题,需要注意。
6)注意日志输出,例如选择数据库更新方式,而且日志级别是debug,那么后台就会拼命的输出日志,会在很大程度上影响速度,此处一定要注意。
7,常见的调试BUG。
Kettle提供了很多调试的解决办法,但是对于常见的调试BUG还是能避免就避免。
1)路径问题。我最常遇到的问题就是在windows下调试成功,但是部署到UNIX下出问题,忘记将windows下路径变成unix下,经常会出现问题。
2)输出端,数据库插入更新选择不对。输出端,提供了三种数据库输出的办法,数据库输出,插入/更新,更新,对于这三种,各有利弊,如果你知道数据库输出,完全是插入,如果有重复数据,则会报错;插入更新和更新,因为更新数据时,后台输出很多日志,会导致效率很低。
Kettle定时执行的更多相关文章
- Kettle定时执行(ETL工具)【转】
1,Kettle跨平台使用. 例如:在AIX下(AIX是IBM商用UNIX操作系统,此处在LINUX/UNIX同样适用),运行Kettle的相关步骤如下: 1)进入到Kettle部署的路径 ...
- linux上Kettle定时执行(转换的单步执行,job的单步执行,环境变量,kettle定时功能,效率问题等)转自(http://blog.csdn.net/feng19821209/article/details/5800960)
1,Kettle跨平台使用. 例如:在AIX下(AIX是IBM商用UNIX操作系统,此处在LINUX/UNIX同样适用),运行Kettle的相关步骤如下: 1)进入到Kettle部署的路径 ...
- linux环境下kettle部署(JDK安装配置,kettle安装配置,资源库配置,定时执行job)
一.部署准备 1.1 java安装(略) 1.2 JDK配置 1. 命令行键入“cd /etc”进入etc目录 2. 命令行键入“vi profile”打开profile文件 3. ...
- kettle - Linux下定时执行kettle作业
Linux下实现kettle 自动同步数据 1.安装jdk tar -zxvf jdk-7u25-linux-x64.tar.gz -C /usr/share 2.配置java环境 vim /etc/ ...
- kettle 创建任务定时执行数据抽取
定时执行脚本 使用SPOON 工具建立好转换文件 .ktr,创建下面的.BAT文件,用操作系统的任务调用批处理. G:\soft\data-integration\pan.bat /norep -fi ...
- C#定时执行
代码: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; ...
- MVC 定时执行任务
环境:.net4.5 需求:需要一个方法定时执行任务 解决: System.Threading.Timer 提供以指定的时间间隔执行方法的机制. 此类不能被继承,有10多种实例化方法,满足多种情况. ...
- 【转】linux 定时执行shell脚本
在oracle 中可以利用dbms_job包定时执行pl/sql.sql过程,在像备份等需要在操作系统级定时任务只能采用crontab来完成 本文讲述crontab具体用法,以供备忘. 在oracle ...
- Linux下定时执行脚本(转自Decode360)
文章来自:http://www.blogjava.net/decode360/archive/2009/09/18/287743.html Decode360's Blog 老师(业精于勤而荒于嬉 ...
随机推荐
- Extjs自定义验证介绍
表单验证实例(空验证,密码确认验证,email验证) 我们可以用单独的js写表单验证,但是extjs已经为我们想到了(自己单独写反而不方便). 在验证之前,我不得不提两个小知识点: //大家在很多的e ...
- jQuery.mobile.changePage的参数
选项 类型:对象 属性: allowSamePageTransition(默认值:假的) 类型:布尔 默认情况下,changePage()忽略请求更改为当前活动页面.将此选项设置为true,则允许该请 ...
- hibernate二级缓存实例
hibernate.cfg.xml <?xml version='1.0' encoding='UTF-8'?><!DOCTYPE hibernate-configuration P ...
- Freeze partial parameters while training
1. requires_grad = False Set all parameters in the current model frozen: for p in self.parameters(): ...
- POJ 1050 To the Max 最大子矩阵和(二维的最大字段和)
传送门: http://poj.org/problem?id=1050 To the Max Time Limit: 1000MS Memory Limit: 10000K Total Submi ...
- 大话Linux内核中锁机制之内存屏障、读写自旋锁及顺序锁
大话Linux内核中锁机制之内存屏障.读写自旋锁及顺序锁 在上一篇博文中笔者讨论了关于原子操作和自旋锁的相关内容,本篇博文将继续锁机制的讨论,包括内存屏障.读写自旋锁以及顺序锁的相关内容.下面首先讨论 ...
- Web—09-正则表达式
正则表达式 1.什么是正则表达式: 能让计算机读懂的字符串匹配规则. 2.正则表达式的写法: var re=new RegExp('规则', '可选参数'); var re=/规则/参数; 3.规则中 ...
- [NOI2015]软件包管理器(树链剖分,线段树)
题目描述 Linux用户和OSX用户一定对软件包管理器不会陌生.通过软件包管理器,你可以通过一行命令安装某一个软件包,然后软件包管理器会帮助你从软件源下载软件包,同时自动解决所有的依赖(即下载安装这个 ...
- WebGl 缩放(矩阵变换)
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- WebGl 利用缓冲区对象画多个点
效果: 代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="U ...