我对水壶真的很陌生。当我在转换中使用“设置变量”步骤时,我读到了这个。“Kettle 转换中的所有步骤并行运行”。我想知道这怎么可能。
例如,我有一个只有两个步骤的转换,A 从 csv 文件中读取数据,B 将这些数据写入 xml 文件。如果这两个步骤并行运行,B如何在A读取数据之前将数据写入xml?
任何答案将不胜感激。
我对水壶真的很陌生。当我在转换中使用“设置变量”步骤时,我读到了这个。“Kettle 转换中的所有步骤并行运行”。我想知道这怎么可能。
例如,我有一个只有两个步骤的转换,A 从 csv 文件中读取数据,B 将这些数据写入 xml 文件。如果这两个步骤并行运行,B如何在A读取数据之前将数据写入xml?
任何答案将不胜感激。
这正是它所说的。当转换开始时,所有步骤同时开始。然后它们有一个输入“缓冲区”或一个通常为 50k 行的行集。
所以; 当第一步读取它的前 50k 行时,它们将填充缓冲区,下一步将开始处理这些行,而第一步仍在读取。
等等等等。
在您的示例中,当从 CSV 读取前 50k 行时,它将开始使用这些行写入 XML,同时仍在读取下一个 50k。
这就是为什么必须在先前的转换中使用设置变量并与作业绑定在一起的原因。
对 pdi 作业进行性能调优时的关键之一是确定链中的哪一步最慢。值得庆幸的是,性能指标的东西让这很容易!
此外,如果您愿意,您也可以运行多个步骤副本,例如写入数据库的步骤等。