作业失败时部分数据插入目标的问题

An issue of partial insertion of data into the target when job fails

我们在其中一个源表中设置了17条记录数据,其中第14条记录有错误数据,导致作业失败。然后,在目标中,只有 10 条记录将作为 mysqloutput 组件中指定为“10”的提交大小插入,作业失败。在更正错误记录后的下一次执行中,job 将获取所有执行成功的 17 条记录。因此目标中会有重复项。

我们试过了:

为了克服这个问题,我们尝试使用包含 tmysqlconnection 和 tmysqlcommit 组件的 tmysqlrollback 组件。

Q1 : 是否有任何其他选项可以在不使用 tmysqlconnection 和 tmysqlcommit 组件的情况下使用 tmysqlrollback?

从文档中探索了 tmysqlrollback 和提交组件

https://help.talend.com/reader/QgrwjIQJDI2TJ1pa2caRQA/7cjWwNfCqPnCvCSyETEpIQ

但仍在寻找如何有效设计上述流程的线索。

Q2 : 另外,我们想从性能角度了解 RAM 使用情况和磁盘 space 消耗。

如有任何帮助,我们将不胜感激?

  1. 不,在 Talend 中执行事务的唯一方法是使用 tMysqlConnection 打开连接,然后使用 tMysqlCommit 提交或使用 tMysqlRollback 回滚。
  2. 在不知道您的工作(查找、转换等)的情况下,很难就 ram 消耗和性能向您提出建议。但是如果你只有一个目标源,那么 ram 消耗应该是最小的(确保你在 tMysqlInput 组件上启用流)。如果您有另一个数据库作为源,那么 ram 消耗取决于该数据库驱动程序的配置方式(jdbc 驱动程序通常接受一个参数来告诉它一次只获取一定数量的记录)。
    在内存中处理数据的查找和组件(tSortRowtUniqRowtAggregateRow..等)是导致内存问题的原因,但可以调整它们的使用(使用磁盘等方法) .