kettle执行job

标签: kettle job | 发表时间:2014-03-27 19:40 | 作者:wangjin161
出处:http://www.iteye.com

ETL高级教程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)输出端,数据库插入更新选择不对。输出端,提供了三种数据库输出的办法,数据库输出,插入/更新,更新,对于这三种,各有利弊,如果你知道数据库输出,完全是插入,如果有重复数据,则会报错;插入更新和更新,因为更新数据时,后台输出很多日志,会导致效率很低。



已有 0 人发表留言,猛击->> 这里<<-参与讨论


ITeye推荐



相关 [kettle job] 推荐:

kettle执行job

- - 互联网 - ITeye博客
ETL高级教程kettle. 1,Kettle跨平台使用.     例如:在AIX下(AIX是IBM商用UNIX操作系统,此处在LINUX/UNIX同样适用),运行Kettle的相关步骤如下:.     1)进入到Kettle部署的路径.     2)执行 chmod *.sh,将所有shell文件添加可执行权限.

ETL工具Pentaho Kettle的transformation和job集成

- - CSDN博客推荐文章
Kettle是一款国外开源的etl工具,纯java编写,数据抽取高效稳定(数据迁移工具). Kettle中有两种脚本文件,transformation和job,transformation完成针对数据的基础转换,job则完成整个工作流的控制. 2.1.       transformation实现解析.

Kettle 创建 Transformation

- - CSDN博客推荐文章
1.第一步,先准备数据和工具. 安装好mysql以及客户端工具.   `status` int(11) NOT NULL COMMENT '对内= 1 ,对外= 2',. 以上我们建了四个表,客户customer,账户account,交易记录trade,交易明细表trade_detail. 用下面的sql查询一下得到每个客户下每个账户的交易明细.

kettle 开发总结

- - CSDN博客推荐文章
2.在用file exists 控件的时候,当用到“文本文件输入”时,文本文件中需要一定的格式,类似下图:. ;当然也可以已经创建了相应的表,然后直接按“确定”按钮就行,如果相应的表和输入的列数及列属性不一样时,也可以在sql按钮的语句中取修改. 在使用file exists时,输入也可以用表输入.

Kettle运行日志记录

- - 开源软件 - ITeye博客
原创文章,转载请注明出处:http://qq85609655.iteye.com/blog/2173882. 在kettle.properties中,可以定义参数. 来全局设置,记录kettle的job和trans日志,. 记录日志,会进行锁表,在kettle作业非常多的情况下,容易造成表锁,以及队列等待job日志记录的情况严重影响效率.

如何正确设置job的interval?

- - ITeye博客
首先,先了解interval的定义. 即在job开始执行时根据date function估算job下次执行的时间(NEXT_DATE). 通常,我们采用两种方式来设置job的interval:. 由date function估算出的时间是固定的. 由date function估算出的时间是非固定的.

提高hadoop的mapreduce job效率

- - 数据库 - ITeye博客
hadoop 的mapreduce 的作业在运行过程中常常碰到一些这样的情 况:. 每一个map或者reduce只有30-40秒钟就结束. 超 大规模的job 时,通常会需要大量的map和reduce的slots 支持,但是job运行起来后,running的map和reduce并没有沾满集群的可用slots.

kettle参数、变量详细讲解

- - CSDN博客数据库推荐文章
kettle参数、变量详细讲解. 1、     variable(变量). variables 也可以认为叫做environment variables , 就像它的名字一样,主要是用来设定环境变量的,比如最常见的:文件的存放地址,smtp的配置等等,你也可以把它认为是编程语言里面的全局变量,即使是不同的转换它们也拥有同样的值;.

基于spring-boot的kettle调度 - 简书

- -
大家好,我是帅气小伙,由于最近公司项目辗转大数据,需要做数据抽取的工作,kettle是目前比较成熟的ETL工具,而传统的kettle客户端在任务调度这方面没有实现,于是在网上寻找开源的kettle调度项目. 专门为kettle这款优秀的ETL工具开发的web端管理工具. 貌似源码跑起来比较费劲,各种缺包,于是我为大家专门整理了一下这个项目.

Hive中跑MapReduce Job出现OOM问题分析及解决

- - CSDN博客云计算推荐文章
今天在跑一段很复杂而且涉及数据量10多年的N个表join的长SQL时,发生了OOM的异常. 由于一个map通常配置只有64MB或者128MB,则在Map阶段出现OOM的情况很少见. 所以一般发生在reduce阶段. 但是今天这个异常详细的看后,会发现既不是map阶段,也不是reduce阶段,发现不是执行过程,而是driver提交job阶段就OOM了.