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

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

最佳答案

它们可以用于相似的目的,但是哈希和缓冲区组件之间有一些明显的区别。

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

缓冲区组件只有一个“仅追加”选项,其中多个缓冲区输出将写入同一共享缓冲区。这使其不如哈希组件灵活,但对于许多任务仍然有用。

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

类似的空间中的其他选项,但是当您开始处理无法轻松在内存中处理的数据量(但由于某种原因需要完全包含在内存中而不是被迭代)时,更多的选择是使用我在这里知道其他一些海报的组件家族(尽管我还不需要)。这就像哈希组件一样工作,但是如果需要的话,也会溢出到磁盘上。

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

关于caching - Talend中thashoutput/input和tbufferoutput/input之间的区别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27304990/

10-12 15:04