Kettle 转换与作业

Kettle 转换与作业

写在前面

本文为本人在学习使用kettle进行数据迁移过程中的学习过程记录,仅供参考

Kettle 的转换与作业

转换(Transformation) 和 作业(Job)是Kettle描述数据转换过程的两个基本部件。

转换更着重于对数据内容进行处理,一个转换中可以包含多个步骤。一般来说,在一个转换中,各个组件是并行执行的。当一个组件的输入流接收到内容时,这个组件便进行工作,并将结果放入到输出流中。

相对而言,作业更加关心更为宏观的数据处理,比如文件和目录操作等等。一个作业可以包含多个作业项。作业和转换均可作为一个作业项,也就是说,一个作业可以包含多个子作业和转换。一个作业中的作业项之间是顺序执行的。对于一个作业项来说,只有当该作业项之前的所有作业项执行完毕后,才会执行该作业项。

为什么要用到作业

在之前,我只使用到了kettle的转换部件。最近我在迁移一个数据库表,需要根据表内的字段找到文件,读取文件内容并写到新数据库中。由于文件数量较多,文件又比较大,如果只使用转换的话,kettle会将文件内容一次性读入到内存里,而这样会超出内存限制,导致转换出错。

那如果我每次只取一条记录,读取一两个文件的内容并写入到数据库中,是不是就能够避免超出内存限制呢?

这种方法是可行的。而要做到每次只取一条记录,需要用到作业。在作业的“转换”和“作业”组件设置中, 有一个“执行每一个输入行”选项,勾选后,每输入一行记录,便执行一次该作业项,与我们上面的设想相符合。

注:据说在转换中一些组件也有“执行每一个输入行”这个选项,但目前我还没见过,实际效果未知。

在这里插入图片描述

作业项之间变量的传递

在Kettle中,有丰富的组件实现作业项之间变量的传递。

复制记录到结果(“转换”内组件)

该组件将当前的结果传递给下一个作业项。

复制文件到结果(“转换”内组件)

该组件将一个文件名传递给下一个作业项。

设置变量

该组件可以设置变量,并传递给下一个作业项。

获取变量(“转换”内组件)

该组件可以从上一个作业项中获取变量。

从结果中获取文件(“转换”内组件)

该组件可以从上一个作业项中获取文件名。

从结果中获取记录(“转换”内组件)

该组件可以从上一个作业项中获取相应记录的值。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值