在Talend中thashoutput / input和tbufferoutput / input之间的差异

时间:2014-12-04 22:03:11

标签: caching talend impala

我不清楚Talend中使用tHash和tBuffer组件之间的区别。

我正在考虑在Impala表中存储tMap的结果,并在内存(缓存)中存储另一个副本,并对此执行其他转换以最终写入表。

1 个答案:

答案 0 :(得分:6)

它们可以用于类似的目的,但是哈希和缓冲区组件之间存在一些明显的差异。

它们都通过将结果集存储在内存中来工作,但哈希组件允许您存储多个哈希对象并检索特定的哈希集。如果您需要临时存储多个结果集,然后以某种方式将它们连接回来,例如转换多个数据源,然后将数据写入目标中的单个条目,这将非常有用。您还可以将一个哈希的输出附加到另一个哈希,以写入相同的数据集。

缓冲区组件只有一个仅附加选项,其中多个缓冲区输出将写入相同的共享缓冲区。这使得它不如散列组件灵活,但仍可用于许多任务。

缓冲区组件在哈希组件上提供的额外内容是父作业可以读取缓冲区以将数据发送回调用父作业。如果要将Talend作业部署为Web服务并从中返回数据,也会使用相同的机制,如this tutorial所示。

类似空间中的其他选项,但更多的是当您开始处理无法在内存中轻松处理的数据量时(但由于某种原因需要完全包含在内存中而不是被迭代)使用tCache系列组件,我知道其他一些海报就像我一样(虽然我还没有需要)。这类似于散列组件,但如果需要也会溢出到磁盘。

嵌入式H2数据库也可以在内存中运行,以提供类似的效果和更多选项,但会增加工作的复杂性。