开发者社区 > 大数据与机器学习 > 实时计算 Flink > 正文

flinkcdc2.4.2有没有解决维表关联的痛点呀?

flinkcdc2.4.2有没有解决维表关联的痛点呀?就是不设置ttl会导致ckp越来越大,设置了会丢失数据的情况。强烈建议我们cdc的社区能优化下维表关联功能,如果不能作为维表使用,cdc的使用性大大减低

展开
收起
真的很搞笑 2023-11-06 20:27:03 82 0
2 条回答
写回答
取消 提交回答
  • 你可以看看flink 1.18对于不同流的state的ttl设置,更推荐的是cdc去 look up join 一个性能更强的olap数据库,只读数据库等,或者paimon。一般指的state清理造成的数据丢失问题,大概率你用的是双流join,而不是维表join,此回答整理自钉群“Flink CDC 社区”

    2023-11-08 07:41:04
    赞同 展开评论 打赏
  • Apache Flink的CDC (Change Data Capture) 2.4.2版本并没有专门针对维表关联的痛点进行优化。对于你提到的"不设置ttl会导致ckp越来越大,设置了会丢失数据"的问题,这主要是由于Flink的State TTL机制和Checkpoint机制的设计导致的。

    Flink的State TTL机制是为了防止状态过大而导致内存溢出,它会定期清理过期的状态。然而,如果在处理CDC数据时,状态被频繁地更新,并且每个状态的TTL都很短,那么Checkpoint的大小就会迅速增大。

    另一方面,如果设置了过短的TTL,那么在处理CDC数据时,可能会因为状态被过早地清理而导致数据丢失。这是因为在Flink的Checkpoint过程中,状态会被持久化到磁盘上,然后在后续的运算中,会从磁盘上加载这些状态。如果状态被过早地清理,那么在后续的运算中,就可能无法加载到这些状态,从而导致数据丢失。

    对于这种情况,一种可能的解决方案是,优化你的应用程序,以减少状态的数量和大小。例如,你可以考虑使用更高效的序列化格式,或者减少不必要的状态更新。此外,你也可以考虑使用更长的TTL,以减少Checkpoint的大小,但同时也要确保在Checkpoint期间,有足够的内存来存储所有的状态。

    另外,你也可以考虑使用其他的CDC解决方案,例如Debezium或Canal,它们可能提供了更好的维表关联支持。

    2023-11-07 11:04:04
    赞同 展开评论 打赏

实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载