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

Will buffer in sink miss when flink sink failed?

我正在使用flink处理大量数据并添加到HBase.To提高sink到hbase的速度,我在flink sink上缓冲了一些数据operate.When达到了批处理阈值,数据将发送到 HBase。

但是如果在达到批量阈值之前接收器操作失败, 缓冲区上的数据会不会丢失?如果我将数据一个一个地发送到HBase,速度似乎太慢了。

有没有人知道如何最好地解决这个问题?

Data in buffer will be lost when sink task failed.

如果不使用检查点,这种情况将无法挽救。

通过使用checkpoint,可以从checkpoint重启程序,数据会以at-least-once的语义再次发送到HBase中。要实现 exactly-once 的语义,您可以尝试实现 CheckpointListener 并在检查点完成时提交缓冲区。