有小伙伴用Flink CDC复制存量数据有20亿数据量大小的表吗?可能有100G那么大,每次读取都会把内存撑爆,有什么通用的解决反感吗?
加大内存,你可以算一下你的数据大概1万行有多少mb,然后来调整你的chunk大小,默认8096,具体的值还要乘一个因子,比如我的tm heap是8g,solt是4,那每个solt就是2g空间,在ck 的interval时间内这个slot能进来n个chunk,那n×每个chunk大大小不能超过2g。主要就是调chunk大小和ck interval,此回答整理自钉群“Flink CDC 社区”
对于大数据量的表,Flink CDC确实可能会遇到内存问题。这是因为Flink CDC需要将整个表的数据加载到内存中以进行数据变更的检测和同步。
以下是一些可能的解决方案:
分区表:你可以考虑将大表分区成多个小表。这样,Flink CDC就可以为每个分区创建一个单独的任务,从而减少内存的使用。
增量复制:你可以尝试使用Flink CDC的增量复制模式。在这种模式下,Flink CDC只复制自上次同步以来发生的数据变化。这可以减少内存的使用,但可能会增加同步的时间。
调整任务内存:你可以尝试调整Flink CDC任务的内存分配。你可以增加任务的内存限制,或者使用更高效的内存分配策略。
使用外部表:你可以尝试使用Flink的外部表。外部表允许你直接从磁盘中读取数据,而不需要将数据加载到内存中。
使用批处理:对于大数据量的表,批处理可能是一个更好的选择。批处理可以在数据上执行复杂的转换,而不需要将数据加载到内存中。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。