Apache Beam内存存储

时间:2017-11-24 02:23:03

标签: apache-beam

我的用例是在固定的每小时窗口中处理数据的无限流媒体管道。但是,我需要知道上一个窗口的数据。有没有办法将数据存储在内存中的某个ArrayList中,或者我是否必须在某个地方的db中写入它?

我正在尝试避免滑动窗口,因为只有部分处理需要前一个窗口的数据,我希望尽可能避免重叠。

1 个答案:

答案 0 :(得分:2)

尝试使用有状态的DoFn。但请注意,状态本身是每个窗口的每个键。请参阅https://beam.apache.org/blog/2017/02/13/stateful-processing.htmlhttps://beam.apache.org/blog/2017/08/28/timely-processing.html

请注意,在Beam窗口处于“事件时间”(而不是“处理时间”) - 所以当数据无法到达时(实际上几乎总是如此),“上一个窗口”的概念没有更长的时间是有道理的,因为较早窗口的数据可能在稍后窗口的数据之后到达。某些窗口的数据可能永远不会到达。考虑到这一点,您可能需要重新构建算法。如果您更详细地描述您的用例,将会很有帮助。