【问题标题】:Flink exact once streaming with S3 sinkFlink 精确一次使用 S3 接收器进行流式传输
【发布时间】:2020-06-07 20:42:37
【问题描述】:

我是 Flink 的新手,我正在尝试编写一个具有完全一次性语义的简单流式作业,该作业从 Kafka 侦听并将数据写入 S3。当我说“精确一次”时,我的意思是我不想在写入 S3 和提交文件接收器运算符之间的中间失败时出现重复。我正在使用 v2.5.0 版本的 Kafka,根据this page 中描述的连接器,我猜我的用例最终将具有精确的一次行为。

问题:

1) 我的假设是否正确,即即使在步骤的任何部分发生任何故障,我的用例最终也会有准确的一次,因此我可以说我的 S3 文件不会有重复记录?

2) Flink 如何使用 S3 处理这一次?在documentation 它说,它使用分段上传来获得精确的一次语义,但我的问题是,如何在内部处理它以实现精确的一次语义?假设,一旦 S3 多部分成功并且在操作员提交过程之前任务失败,在这种情况下,一旦操作员重新启动,它会再次将数据流式传输到已经写入 S3 的 S3,所以它会重复吗?

【问题讨论】:

    标签: amazon-s3 apache-flink flink-streaming


    【解决方案1】:

    如果您从 kafka 读取数据,然后使用 StreamingDataSink 写入 S3,您确实应该能够获得一次。

    虽然它不是专门针对 S3,但这篇文章很好地解释了如何在一般情况下确保恰好一次。

    https://flink.apache.org/features/2018/03/01/end-to-end-exactly-once-apache-flink.html

    我的主要收获:失败后,我们必须始终能够从水槽的角度看到我们所处的位置。

    【讨论】:

      猜你喜欢
      • 2016-10-10
      • 2022-01-16
      • 2021-08-01
      • 1970-01-01
      • 2018-01-16
      • 1970-01-01
      • 2018-01-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多