【问题标题】:Aggregate data from Kafka using Flink使用 Flink 从 Kafka 聚合数据
【发布时间】:2019-09-10 15:27:54
【问题描述】:

我正在尝试编写一个 Flink 应用程序,该应用程序将从 Kafka 读取数据并通过自定义 Hbase 接收器增加 Hbase 中的计数。我正在研究容错,我看到 Flink 将从最新检查点的偏移量重新启动作业。这是否意味着我的 Hbase 接收器会产生重复项?我必须实现自己的重复数据删除逻辑吗?

【问题讨论】:

    标签: streaming apache-flink


    【解决方案1】:

    HBase sink 会产生重复吗?

    这取决于您何时将数据插入 HBase。

    如何实现Exactly-Once语义?

    根据您的描述,您需要的是端到端的exactly-once语义,这意味着数据可以被多次处理但插入只能执行一次。看一下 CheckpointListener 接口,方法 notifyCheckpointComplete 是在 checkpoint 完成时执行的,此时正是你向 HBase 提交数据的好时机。

    有关详细信息,请查看此文档。 https://flink.apache.org/features/2018/03/01/end-to-end-exactly-once-apache-flink.html

    【讨论】:

    • 这很有用,谢谢!后续问题:写入 Hbase 时处理失败(限制错误、暂时不可用错误)的最佳方法是什么?
    • @frodo 这取决于您的操作。如果您喜欢连接外部数据库,那么添加重试逻辑会更好。其他重启后可能不成功的场景,可能需要让应用崩溃后再手动检查。
    猜你喜欢
    • 1970-01-01
    • 2016-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多