天赋表现

Talend performance

我们有一个要求,我们从三个不同的文件中读取数据,并在同一作业中将这些文件与不同的列进行连接。

每个文件大小约为 25-30 GB。我们的系统 RAM 大小仅为 16GB。做与 tmap 的连接。 Talend 将所有参考数据保存在物理内存中。就我而言,我无法提供那么多内存。由于内存不足,作业失败。如果我在 tmap 中使用 join with temp disk 选项,工作会非常慢。

请帮我解答这些问题。

  1. Talend 如何处理大于 RAM 大小的数据?
  2. 流水线并行性是否与 talend 相符?我错过了什么吗 在代码中实现它?
  3. tuniq & Join 操作是在物理内存中完成的,导致作业 到 运行 死慢。磁盘选项可用于处理这些 功能,但速度太慢。
  4. 如何在不将数据推送到 DB(ELT) 的情况下提高性能。 talend 是否可以处理 millions.Need 中的大量数据来处理这个 RAM 较少的数据类型?

谢谢

Talend 以非常快速和高效的方式处理大量数据。这完全取决于您对 Talend Platforms 的了解。

请将以下评论视为您问题的答案。

Q1.How Talend 处理大于 RAM 大小的数据?

一个。您不能将整个 RAM 用于 Talend studio。只有一小部分 RAM 可以使用它几乎是你 RAM 的一半。

例如:- 在 64 位系统上有 8 GB 可用内存时,最佳设置可以是: -vmargs

-Xms1024m

-Xmx4096m

-XX:MaxPermSize=512m

-Dfile.encoding=UTF-8

现在在你的情况下,要么你必须增加 100 GB 的 RAM

或者直接将数据写入硬盘。为此,您必须为缓冲区组件选择一个临时数据目录,例如 - tMap、tBufferInputs、tAggregatedRow 等

Q2。流水线并行性是否与 talend 相符?我是否遗漏了代码中的任何内容来完成此操作?

一个。在Talend Studio中,数据流的并行化是指将一个Subjob的输入数据流分割成多个并行进程,同时执行,从而获得更好的性能。

但此功能仅在您订阅其中一种 Talend Platform 解决方案的情况下可用。

当您必须使用 Talend Studio 开发作业来处理非常大的数据时, 您可以通过单击启用或禁用并行化,然后 Studio 会自动执行给定作业

enter image description here

并行执行 并行化的实现需要四个关键步骤,解释如下:

Partitioning():在这一步中,Studio 将输入记录拆分为给定数量的线程。

Collecting():Studio在这一步中收集拆分后的线程,并将其发送给给定的组件进行处理。

Departitioning():在这一步中,Studio将拆分线程并行执行的输出进行分组。

Recollecting():Studio在这一步中抓取分组后的执行结果输出给给定的组件。

Q3。 tuniq 和 Join 操作是在物理内存中完成的,导致作业 运行 非常慢。磁盘选项可用于处理这些功能,但速度太慢。

Q4。如何在不将数据推送到 DB(ELT) 的情况下提高性能。 talend 是否可以处理 millions.Need 中的大量数据以使用较少的 RAM 处理此类数据?

一个 3&4。在这里,我建议您使用 tOutputBulkExec 将数据直接插入数据库。组件,然后您可以在数据库级别使用 ELT 组件应用这些操作。

您可以尝试对 jobdefinition 本身进行一些更改。喜欢:

-- 使用流媒体 -- 对大字符串数据使用修剪。所以转移不必要的 数据会阻止。 -- 使用连接器 OnSubjobOk 而不是 OnComponentOk 所以 垃圾收集器有机会及时释放更多数据