当flink sink失败时,sink中的缓冲区是否会丢失?

wxclj1h5  于 2021-06-09  发布在  Hbase
关注(0)|答案(1)|浏览(626)

我正在使用flink处理大量数据并添加到hbase中。为了提高sink到hbase的速度,我在flink sink operation上缓冲了一些数据。当达到批处理阈值时,数据将发送到hbase。
但是如果在达到批处理阈值之前接收器操作失败,缓冲区上的数据是否会丢失?如果我将数据逐个发送到hbase,速度似乎太慢。
有人对如何最好地解决这个问题有什么建议吗?

slsn1g29

slsn1g291#

当接收器任务失败时,缓冲区中的数据将丢失。
如果不使用检查点,则无法保存此情况。
通过使用checkpoint,您可以从checkpoint重新启动程序,数据将再次发送到hbase,语义至少为一次。要实现恰好一次的语义,可以尝试实现checkpointlistener,并在checkpoint完成时提交缓冲区。

相关问题