前言
我已经自动化并编写了单个 .ktr 文件的创建,以处理源 (MySQL) 和目标 (InfoBright) 数据库之间的数据提取和同步。为每个表创建一个 .ktr 文件。
我有一组 2 个作业和 2 个转换组成一个“运行”以查找数据同步 .ktr 文件并将它们排队等待执行。
作业 1(入口点)
- 运行转换以在目标目录中搜索与从命令行传递的通配符匹配的文件
- 对于每一行,运行 Job 2 (file looper)
- 运行完成后,做一些错误检查,邮寄,关闭
作业 2(文件循环器)
- 运行转换以获取结果并使用文件名填充变量
- 运行 ${filename} 转换以在 MySQL 和 Infobright 之间执行同步
- 执行一些错误检查、填充错误日志等。标准的正常失败和错误日志记录
这一切都完美无缺。我可以在我的目标目录中排队 250 多个 .ktr 文件,厨房会在大约 9-15 分钟内完成它们,具体取决于要同步的数据量
问题
Pentaho 似乎不支持这种抽象循环执行转换的并行化。Jobs 不像 Transformations 那样支持输出分配。我检查了 Pentaho 支持论坛,并在那里发帖,没有任何回应。
我正在寻找 4 或 5 个并行线程,每个线程执行一个排队的结果(收集的文件名)。我希望这里的某人可以提供一些关于我如何实现这一点的见解,除了手动使用文件名标签查找文件,运行厨房作业 5 次,将文件名标签作为参数传递。
(这并没有真正解决输出结果分配问题,因为它只运行 5 个单独的顺序作业,并且不分配工作负载)
编辑:这是 Pentaho 论坛上带有图片的帖子,这可能有助于说明我在说什么:http ://forums.pentaho.com/showthread.php?162115-Parallelizing-looped-job-step
干杯