1

我们在基于 Tomcat 8.5 的 AWS EC2 实例 (CentOS) 上运行 Matillion (v1.54)。到目前为止,我们已经开发了一些 ETL 作业,它们的执行需要相当长的时间(即长达数小时)。我们想加快我们工作的执行速度,我想知道如何识别瓶颈。

让我感到困惑的是,m5.2xlargeEC2 实例(8 个 vCPU,32G RAM)和数据库(Snowflake)都不是很忙,而且大部分时间似乎都处于空闲状态(关于 CPU 和 RAM 的使用情况,如图所示top)。

我们的环境配置为使用多达 16 个并行连接。我们还添加了 JVM 选项-Xms20g -Xmx30g/etc/sysconfig/tomcat8确保 JVM 获得足够的 RAM 分配。

我们的 Matillion 作业进行转换并加载到许多表中,其中大部分可以(并且应该)并行完成。我们仍然看到,大多数任务都是按顺序处理的。

我们如何加强这一点?

4

2 回答 2

0

默认情况下,只有一个与 Snowflake 的 JDBC 连接,因此您的转换作业可能因此而被强制串行。

您可以尝试在“编辑环境”对话框下增加并发连接数,如下所示:

在此处输入图像描述

这里有更多关于并发连接的信息。

如果你这样做,有几件事要避免:

  • 事务(开始、提交等)将强制转换作业再次以串行方式运行
  • 如果您有一个参数化的转换作业,那么一次只能运行它的一个实例。关于该主题的更多信息在这里
于 2021-11-30T06:19:05.637 回答
0

因为 Matillion 服务器只是生成 SQL 语句并在 Snowflake 中运行它们,所以 Matillion 服务器不太可能成为瓶颈。您应该确保您的编排作业同时将所有内容提交给 Snowflake,并且您的流程中没有内置依赖项(除非需要)。这些步骤将按顺序进行: 在此处输入图像描述



这些步骤将并行完成(并且将取决于 Snowflake 仓库的规模来扩展): 在此处输入图像描述

另外 - 尝试具有更高并发级别的 Alter Warehouse 组件 在此处输入图像描述

于 2021-11-29T17:27:24.617 回答