gpt4 book ai didi

pentaho - 如何使用 Pentaho 处理 Amazon Redshift 中缓慢变化的维度?

转载 作者:行者123 更新时间:2023-12-02 17:03:16 24 4
gpt4 key购买 nike

由于 Amazon Redshift 针对读取而不是写入进行了优化,因此我如何使用 ETL 工具(在我的情况下是 Pentaho 数据集成)管理缓慢变化的维度过程?

由于 ETL 工具会逐行进行更新/插入(维度查找/更新),因此性能会非常低。

有人已经解决过这个问题了吗?

最佳答案

Redshift 中的更新速度很慢,因为更新是在事务中执行的一系列操作:

  1. 选择要更新到临时表中的行
  2. 删除这些行
  3. 根据更新条件更新临时表中的这些行
  4. 将更新的行附加到原始表

所有这些都必须跨节点协调。

更新单行可能需要与更新 1000 行一样长的时间。更糟糕的是,由于更新时间太长并且需要写锁,它们会长时间阻塞查询,从而显着影响整体系统性能。

有 3 种方法可以加快速度(全部来自经验):

  1. 避免更新。

    如果您有一个条件可以让您区分新行和旧行,只需将新行附加到表中,然后使用该条件修改查询即可。您会惊讶地发现 Redshift 的执行速度更快 - 即使每个查询可能变得更加复杂,因为没有使系统过载的更新,这些查询可能运行得更快(确保 dist 键正确)。

    例如,每个业务键的最大时间戳条件运行得非常快(特别是如果您的业务键是您的 dist 键 - 它将并行运行)。

    这是更好的解决方案。

  2. 批量执行更新。

    如果您的更新适用于一系列行,请使用 where 条件一次性更新所有行。 1000 个批处理效果很好,但您的里程可能会有所不同。

  3. 创建一个表来存储"new"行,然后在该表至少包含 1000 行后使用联接进行更新。

关于pentaho - 如何使用 Pentaho 处理 Amazon Redshift 中缓慢变化的维度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37309772/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com