【问题标题】:Pentaho Dimension Lookup/Update deadlock errorPentaho Dimension Lookup/Update 死锁错误
【发布时间】:2021-10-08 14:28:15
【问题描述】:

我有一个维度查找/更新步骤,我正在尝试使用 JSON 文件中的数据更新表,但它失败并出现以下错误:

2021/08/03 12:51:58 - dlu-insrting_in_table.0 - ERROR (version 9.1.0.0-324, build 9.1.0.0-324 from 2020-09-07 05.09.05 by buildguy) : Because of an error this step can't continue: 
2021/08/03 12:51:58 - dlu-insrting_in_table.0 - Couldn't get row from result set
2021/08/03 12:51:58 - dlu-insrting_in_table.0 - Transaction (Process ID 78) was deadlocked on lock resources with another process and has been chosen as the deadlock victim. Rerun the transaction.

这是维度查找/更新步骤的配置。

这是转型的一部分

如果我只使用一个副本来启动该步骤,一切正常,但如果我放置多个副本,则会出现上述错误。问题是错误似乎是偶然的,有时在插入两行后崩溃,有时它插入所有内容而没有给出错误。

搜索文档和实习并没有太大帮助,我无法修复它。我读到这可能是插入顺序问题或与主键相关的问题,但数据很好(键是唯一的)并且步骤的配置似乎没问题。我注意到的是没有按顺序插入技术密钥,我认为是因为它取决于首先完成的过程,但我没有找到强制它的方法(假设这是问题)。

有谁知道这里的问题是什么,我该如何解决?谢谢。

【问题讨论】:

    标签: etl pentaho pdi


    【解决方案1】:

    不要运行查找/更新步骤的多个副本。它的提交大小为 100,因此如果您有该步骤的 2 个副本,则您有两个线程同时尝试更新同一个表。很可能其中一个正在锁定另一个尝试写入的表(或行块)并且该锁定导致超时。

    为什么它有时会崩溃,有时会工作?这实际上有点随机:每个副本都会收到一批要操作的行,这取决于发送到每个副本的行以及需要多少更新。

    【讨论】:

    • 我设法解决了这个问题,这是一个索引问题。是的,您也可以使用 100 的提交大小在 Lookup/Update 上运行多个副本。谢谢您的回答。
    【解决方案2】:

    所以我终于设法解决了这个问题。该问题与 Pentaho 严格无关,而是与 SQL Server 相关。特别是,我不得不重新定义插入的表上的索引。您将在此答案中找到更多详细信息:Insert/Update deadlock with SQL Server

    【讨论】:

      猜你喜欢
      • 2010-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-24
      • 1970-01-01
      • 2012-05-01
      相关资源
      最近更新 更多