首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Talend性能

Talend性能
EN

Stack Overflow用户
提问于 2017-03-22 18:55:29
回答 2查看 1.7K关注 0票数 1

我们需要从三个不同的文件中读取数据,并在同一工作中具有不同列的这些文件之间进行连接。

每个文件大小约为25-30 GB。我们的系统内存只有16 is。使用tmap进行连接。Talend将所有的参考数据保存在物理内存中。就我而言,我不能提供那么多的记忆。作业由于内存不足而失败。如果我在tmap中使用选项,作业就会非常慢。

请帮我回答这些问题。

  1. Talend如何处理大于RAM大小的数据?
  2. 管道并行性与talend是否已就位?我是否遗漏了代码中的任何东西来实现这一点?
  3. tuniq & Join操作是在物理内存中完成的,导致作业运行非常缓慢。磁盘选项可以处理这些功能,但是太慢了。
  4. 如何在不将数据推送到DB(ELT)的情况下提高性能。塔伦德能否在millions.Need中处理海量数据,用较少的内存处理这种数据?

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-04-12 14:37:28

Talend处理大量数据的速度非常快,效率很高。这完全取决于你对Talend平台的了解。

请考虑以下评论作为你的问题的答案。

如何处理大于RAM大小的数据?

答:你不能把你所有的内存都用在塔伦德工作室。只有一小部分RAM可以使用它几乎一半的RAM。

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

-Xms1024m

-Xmx4096m

-XX:MaxPermSize=512m

-Dfile.code=UTF-8

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

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

Q2。管道并行性与talend是否已就位?我是否遗漏了代码中的任何东西来实现这一点?

在Talend Studio中,数据流的并行化意味着将子作业的输入数据流划分为并行进程,并同时执行它们,从而获得更好的性能。

但是,只有在订阅了Talend平台解决方案之一的条件下,此功能才可用。

当您必须开发一个作业来使用Talend处理非常庞大的数据时,您可以通过一次单击就可以启用或禁用并行化,然后该Studio会在给定的作业中自动化实现

在这里输入图像描述

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

分区():在这个步骤中,Studio将输入记录拆分成给定数量的线程。

Collecting ():在这个步骤中,Studio收集拆分的线程并将它们发送到给定的组件进行处理。

在这个步骤中,Studio对拆分线程的并行执行的输出进行分组。

Recollecting ():在这个步骤中,Studio捕获分组执行结果并将它们输出到给定的组件。

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

Q4。如何在不将数据推送到DB(ELT)的情况下提高性能。塔伦德能否在millions.Need中处理海量数据,用较少的内存处理这种数据?

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

票数 1
EN

Stack Overflow用户

发布于 2019-06-14 10:04:13

您可以尝试在职务定义本身中进行一些更改。比如:

-使用流--对大字符串数据使用修整。因此,转移不必要的数据将防止。-使用连接器OnSubjobOk而不是OnComponentOk,这样垃圾收集器就有机会及时释放更多的数据

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42960392

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档