我正在尝试创建一个流数据流管道。 我需要访问一些额外的数据来处理从pubsub收到的主要输入。如果我使用侧输入然后在一段时间后(如1天)我需要更新缓存的侧输入数据。 或者有没有办法以列表或映射的形式将其他数据传递给转换,以便我可以使用第三方缓存管理器来刷新此数据。
感谢。
答案 0 :(得分:4)
以下是一些可能性:
如果您可以将对您的旁边输入的更改表示为无限制的PCollection
更改 - 例如通过订阅更改通知主题 - 那么您应该能够将更新添加到{{ 1}}您正在查看作为侧面输入,只要您能够容忍陈旧数据。侧输入的更新和缓存在更新时没有明确的延迟,但肯定会少于一天。
如果您没有更改通知主题,您仍然可以编写自己的PCollection
数据流将轮询更新。这可能有点复杂。
与UnboundedSource
类似,在Apache Beam(孵化)中,我们积极致力于在UnboundedSource
中支持带回调的计时器,因此您可能希望关注BEAM-27。
您还可以在传入的主输入数据上创建自己的缓存。
根据其他细节,可能还有其他方法。您可能需要考虑如何“等待”新值准备好。对于特定窗口,任何主输入都将等待侧输入具有该窗口的值。但是一旦侧面输入有一个值,就没有更多的等待,而只是最好的努力最终更新。