我正在使用flink处理大量数据并添加到hbase中。为了提高sink到hbase的速度,我在flink sink operation上缓冲了一些数据。当达到批处理阈值时,数据将发送到hbase。但是如果在达到批处理阈值之前接收器操作失败,缓冲区上的数据是否会丢失?如果我将数据逐个发送到hbase,速度似乎太慢。有人对如何最好地解决这个问题有什么建议吗?
slsn1g291#
当接收器任务失败时,缓冲区中的数据将丢失。如果不使用检查点,则无法保存此情况。通过使用checkpoint,您可以从checkpoint重新启动程序,数据将再次发送到hbase,语义至少为一次。要实现恰好一次的语义,可以尝试实现checkpointlistener,并在checkpoint完成时提交缓冲区。
1条答案
按热度按时间slsn1g291#
当接收器任务失败时,缓冲区中的数据将丢失。
如果不使用检查点,则无法保存此情况。
通过使用checkpoint,您可以从checkpoint重新启动程序,数据将再次发送到hbase,语义至少为一次。要实现恰好一次的语义,可以尝试实现checkpointlistener,并在checkpoint完成时提交缓冲区。