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

时间:2018-02-19 09:42:19

标签: etl talend talend-mdm

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

我们尝试过:

为了解决这个问题,我们尝试使用tmysqlrollback组件,其中包含了tmysqlconnection和tmysqlcommit组件。

Q1:在不使用tmysqlconnection和tmysqlcommit组件的情况下,还有其他选项可以使用tmysqlrollback吗?

从文档

中探索了tmysqlrollback和commit组件

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

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

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

对此有任何帮助将不胜感激?

1 个答案:

答案 0 :(得分:1)

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