apache-flink - 为什么 Flink 在 JDBC 事务的情况下不能保证 JDBC 连接器的精确一次?
问题描述
由于旧系统,我需要将数据从 Flink 输出到 MySQL。但我在 flink 中找到了这样的文档:
创建的 JDBC 接收器提供至少一次保证。使用 upsert 语句或幂等更新可以有效地实现精确一次。
但是系统不能使用幂等更新。我想知道为什么在 JDBC 事务的情况下 Flink 不能保证 JDBC 连接器的精确一次?谢谢。
解决方案
这不是微不足道的原因是,为了让 Flink 接收器利用外部数据存储中的事务支持,两阶段提交必须与 Flink 的检查点机制集成。
直到最近,还没有人为 JDBC 连接器完成这项工作。但是,这个功能刚刚合并到master,将包含在1.13中;参见FLINK-15578。有关设计讨论,请参阅[讨论] JDBC 精确一次接收器。
有关当前 upsert 支持的更多信息(在 Flink SQL 的上下文中),请参阅idempotent writes。
推荐阅读
- python-2.7 - 如何修复 UnicodeEncodeError:在 Pyspark 中将 Dataframe Row 转换为字符串
- matrix - 求系统的传递矩阵
- python - Python Selenium 上传按钮
- oauth - 如何区分 JWT 访问令牌和用作授权标头的刷新令牌
- json - 如何获取 | 将 json 数据加载到列表中
在 Flutter 中确实有效? - c# - C#打开一个excel工作簿后,如何防止用户在同一个excel实例中打开另一个excel文件(通过windows)?
- c# - 如何在 CefSharp 中获取特定 ChromiumWebBrowser 实例的远程调试 URL?
- ubuntu - Minikube 是否在 Ubuntu 19.10 虚拟机中运行?
- typescript - 可观察的嵌套回调
- r - 我可以将 xts 对象写入 excel,包括行名吗