我想使用 Google Cloud Dataflow 创建会话窗口,如数据流模型论文中所述。我想将未绑定的数据发送到 Pub/Sub,然后以流式传输方式在 Cloud Dataflow 中读取它。我想使用具有较长超时时间(30 分钟到 120 分钟)的会话窗口。
我的问题是:
1)如果数据流过程失败会发生什么?
2)我是否会丢失存储在窗口中尚未超时的所有数据?
3)Dataflow提供哪些恢复机制?
例子:
假设我有一个超时时间为 30 分钟的会话窗口,它会触发每分钟的处理时间并进行累积。假设该值是一个整数,我只是将窗口中的所有值相加。假设这些键值对来自 Pub/Sub:
7 -> 10 (at time 0 seconds)
7 -> 20 (at time 30 seconds)
7 -> 50 (at time 65 seconds)
7 -> 60 (at time 75 seconds)
Run Code Online (Sandbox Code Playgroud)
我想在 60 秒的时候窗口会触发并且会产生一7 -> 30对。我还假设在 120 秒时窗口会再次触发,并且会产生一7 -> 140对,因为它是通过累积触发的。
我的问题是,如果 70 个数据流失败会发生什么?我认为在第 70 秒之前收到的 3 条消息已经被确认到 Pub/Sub,因此它们不会被重新传递。
当Dataflow重新启动时,它是否会以某种方式恢复带有密钥7的窗口的状态,以便在120秒时它可以生成一7 -> 140对,或者它只会生成一7 -> 60 …
相当于:
INSERT INTO table (myColumn) VALUES (now())
Run Code Online (Sandbox Code Playgroud)
使用Cassandra对象映射api?