hbase - flink sink 失败时,sink 中的缓冲区会丢失吗?
问题描述
我正在使用flink处理大量数据并添加到HBase中。为了提高sink到hbase的速度,我在flink sink操作上缓冲了一些数据。当达到批处理阈值时,数据将发送到HBase。
但是如果在达到批处理阈值之前sink操作失败,缓冲区上的数据会丢失吗?如果我将数据逐个发送到HBase,速度似乎太慢了。
有没有人对如何最好地解决这个问题有任何指示?
解决方案
当 sink 任务失败时,缓冲区中的数据将丢失。
如果不使用检查点,则无法挽救这种情况。
通过使用 checkpoint,您可以从 checkpoint 重新启动程序,数据将再次以 at-least-once 的语义发送到 HBase。要实现完全一次的语义,您可以尝试实现 CheckpointListener 并在检查点完成时提交缓冲区。
推荐阅读
- javascript - 在边缘浏览器中动态注入 JavaScript 模块
- c - 我应该将什么传递给 isdigit() 以使其正常工作?
- selenium - Selenium 没有正确解释属性值
- javascript - 如何在 JavaScript 中创建对象列表
- reactjs - React、Redux、NextJS 奇怪的状态竞争覆盖
- python - 如何使用 setuptools 安装可写共享和用户特定数据文件?
- firebase - 如果收到 Firebase 安全规则信函,我该怎么办?
- python - 在 Pandas DataFrame 上应用函数
- android - 使用弹出消息覆盖后退按钮
- r - R中的外部联盟