我在批处理中使用 apache flink 有一段时间了,但现在我们想将此批处理作业转换为流式作业。我遇到的问题是如何运行端到端测试。
它是如何在批处理作业中工作的
在使用批处理时,我们使用 cucumber 创建了端到端测试。
流式作业中的问题
我们想对流式作业做类似的事情,除了流式作业并没有真正完成。
所以:
我们可以在每次测试后等待 5 秒,并假设所有内容都已处理,但这会大大减慢所有内容。
问题:
有哪些方法或最佳实践可以在流式 flink 作业上运行端到端测试,而不会在 x 秒后强制终止 flink 作业
最佳答案
大多数 Flink DataStream 源,如果它们从有限输入中读取,将在到达末尾时注入(inject)值为 LONG.MAX_VALUE 的水印,之后作业将终止。
Flink training exercises说明对 Flink 作业进行端到端测试的一种方法。我建议克隆 github repo并查看测试是如何设置的。他们使用 custom source and sink并重定向输入和输出以进行测试。
documentation 中也讨论了这个主题。 .
关于integration-testing - Apache Flink - 端到端测试如何终止输入源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51242886/