Google cloud dataflow 究竟是什么管理beam中的水印?
Beam的强大功能来自它的高级窗口功能,但它也有点令人困惑 在本地测试(我使用rabbitmq作为输入源)中看到了一些奇怪的情况,消息并不总是得到Google cloud dataflow 究竟是什么管理beam中的水印?,google-cloud-dataflow,apache-beam,Google Cloud Dataflow,Apache Beam,Beam的强大功能来自它的高级窗口功能,但它也有点令人困惑 在本地测试(我使用rabbitmq作为输入源)中看到了一些奇怪的情况,消息并不总是得到ackd,并且修复了不总是关闭的窗口,我开始在StackOverflow和Beam代码库中挖掘 对于何时设置水印,似乎存在特定于源代码的问题: RabbitMQ水印不前进: PubSub水印不适用于低容量: SQS IO不会在没有新传入消息的时间段内推进水印- (和其他)。此外,检查点s(检查点s)似乎有独立的概念,与水印相反 所以我想这是一个多部
ack
d,并且修复了不总是关闭的窗口,我开始在StackOverflow和Beam代码库中挖掘
对于何时设置水印,似乎存在特定于源代码的问题:
- RabbitMQ水印不前进:
- PubSub水印不适用于低容量:
- SQS IO不会在没有新传入消息的时间段内推进水印-
检查点
s(检查点
s)似乎有独立的概念,与水印
相反
所以我想这是一个多部分的问题:
ack
dRabbitMqIO
以查找水印问题。我不熟悉这个特定的IO连接器,但是如果您还没有这样做,那么向用户列表发送错误报告或电子邮件会很好啊,我明白了。看起来RabbitMqIO的阅读器故意将这两个概念混为一谈(返回的水印是检查点标记最早的时间戳)。我相信我现在看到了我想报告的“错误”,例如PubsubIO为在不活动期间推进水印做了规定,而Rabbit没有,如果没有新的消息通过,消息可能会被“卡住”。(我所说的“被卡住”是指在看到阈值消息之前,固定窗口永远不会“按时”启动。)我将对此进行记录。事实证明,我几乎所有的困惑都是由于默认RabbitMqIO的无限源实现中出现了一些意外的实现选择。我已经记录了他们,并进行了调查。谢谢