我已经自动化并编写了单个.ktr文件的脚本,以处理Source(MySQL)和Target(InfoBright)数据库之间的数据提取和同步。为每个表创建一个.ktr文件。
我有一组2个作业和2个转换组成一个“运行”来查找数据同步.ktr文件并将它们排队等待执行。
作业1(切入点)
作业2(文件循环播放器)
这一切都很完美。我可以在我的目标目录中排队250+ .ktr文件,并且厨房在大约9-15分钟内通过它们,具体取决于要同步的数据量
Pentaho似乎不支持这种抽象循环执行转换的并行化。 Jobs不支持像Transformations那样的输出分发。我查看过Pentaho支持论坛,并在那里发布,没有回复。
我希望获得4个或5个并行线程,每个线程执行一个排队结果(收集的文件名)。我希望这里的某些人能够提供一些有关如何实现这一点的见解,除了手动使用文件名标签整理文件,并运行5次厨房作业,将文件名标签作为参数传递。
(这并没有真正解决输出结果分配问题,因为它只运行5个单独的顺序作业,并且不分配工作负载)
编辑:这是Pentaho论坛上有关图片的帖子,可能有助于说明我在说什么:http://forums.pentaho.com/showthread.php?162115-Parallelizing-looped-job-step
干杯
答案 0 :(得分:1)
经过大量的反复试验和大量研究后,我发现了以下内容:
Kettle不支持基于负载的分发,只支持循环(它通常用于将数据行分配到不同的步骤,因此加载/执行时间几乎不是一个因素)
仅循环分发意味着我在分发中的每个Job将处理相同数量的结果(在我的情况下,每个Job Executor步骤处理9个转换,无论每个转换都需要多长时间。)< / p>
一旦我完全掌握了Kettle处理和传递结果的方式,解决方法(循环分布而不是真正的并行化)比我想象的更简单,我只需要从我的工作执行步骤第一次转换的父作业,使用Job Executor步骤。
由于采用这种分配方式,在结果中长时间运行的结果相互靠近是有益的,因此它们在作业中均匀分布
我确实在Pentaho Forums上添加了对我的帖子的回复,提供了我的解决方案的图片。
不幸的是,按照#1,似乎不支持我原来的目标。
答案 1 :(得分:0)
通过输入行集的转换-> Job executor步骤?
工作执行者步骤 -可以在“参数”选项卡中对文件名进行参数化 -“行分组”选项卡中要发送的行数= 1 -副本数量从1更改为您需要的