我们需要从三个不同的文件中读取数据,并在同一工作中具有不同列的这些文件之间进行连接。
每个文件大小约为25-30 GB。我们的系统内存只有16 is。使用tmap进行连接。Talend将所有的参考数据保存在物理内存中。就我而言,我不能提供那么多的记忆。作业由于内存不足而失败。如果我在tmap中使用选项,作业就会非常慢。
请帮我回答这些问题。
谢谢
发布于 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组件应用这些操作。
发布于 2019-06-14 10:04:13
您可以尝试在职务定义本身中进行一些更改。比如:
-使用流--对大字符串数据使用修整。因此,转移不必要的数据将防止。-使用连接器OnSubjobOk而不是OnComponentOk,这样垃圾收集器就有机会及时释放更多的数据
https://stackoverflow.com/questions/42960392
复制相似问题