Streaming 使用Flink从Kafka收集数据

Streaming 使用Flink从Kafka收集数据,streaming,apache-flink,Streaming,Apache Flink,我正在尝试编写一个Flink应用程序,它将从Kafka读取数据,并通过自定义Hbase接收器增加Hbase中的计数。我正在研究容错性,我看到Flink将从最新检查点的偏移量重新启动作业。这难道不意味着我的Hbase接收器将产生重复项吗?我是否必须实施自己的重复数据消除逻辑 HBase接收器是否会产生副本 这取决于何时将数据插入HBase 如何实现精确的一次语义 根据您的描述,您需要的是端到端的精确一次语义,这意味着可以多次处理数据,但插入只能执行一次。看看CheckpointListener接口

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

HBase接收器是否会产生副本

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

如何实现精确的一次语义

根据您的描述,您需要的是端到端的精确一次语义,这意味着可以多次处理数据,但插入只能执行一次。看看CheckpointListener接口,当检查点完成时会执行notifyCheckpointComplete方法,这是将数据提交到HBase的好时机


有关更多信息,请参阅本文档

这是非常有用的,谢谢!后续问题:在写入Hbase时,处理故障(节流错误、暂时不可用错误)的最佳方法是什么?@frodo这取决于您的操作。如果像连接外部数据库一样,最好添加重试逻辑。在重启后可能无法成功的其他场景中,您可能需要让应用程序崩溃,然后手动进行检查。