【问题标题】:An issue of partial insertion of data into the target when job fails作业失败时将部分数据插入目标的问题
【发布时间】:2018-02-19 09:42:18
【问题描述】:

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

我们试过了:

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

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

从文档中探索了 tmysqlrollback 和 commit 组件

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

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

第二季度:另外,我们想从性能角度了解 RAM 使用情况和磁盘空间消耗情况。

任何帮助将不胜感激?

【问题讨论】:

  • RAM 使用量和磁盘消耗量是什么意思?
  • 在编写过程时,我还必须考虑性能,这可能也是考虑资源的原因

标签: etl talend talend-mdm


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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-20
    • 1970-01-01
    • 1970-01-01
    • 2023-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多