在以下情况下,我试图理解在语义结构化的流式传输中一旦语义受到妥协,端到端是否完全正确。
场景:使用kafka源和文件接收器的结构化流作业已启动。 Kafka有16个分区,我正在与16个执行程序一起阅读。当特定批次不完整时,我中断了工作。 16个任务中有8个已完成,我们生成了8个输出文件。现在,如果我再次运行该作业,该批处理将开始并从先前不完整的批处理的相同偏移范围读取数据,从而生成16个输出文件。现在,不完整批处理的8个输出文件导致重复,并且通过数据比较确认了相同的结果。
答案 0 :(得分:1)
关于精确端到端流传输,请建议您在flink(与spark类似的框架)上阅读this poster。
简而言之,在发生检查点事件时存储源/接收器状态。
来自flink帖子的其他答案。
因此,我们将所有这些不同的部分放在一起: