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

大佬们,我在用flink cdc 采集mysql表时,表里面有一个字段是 `signed_pdf`

大佬们,我在用flink cdc 采集mysql表时,表里面有一个字段是 signed_pdf longtext COLLATE utf8mb4_bin COMMENT '签章合同' 占用的空间很大, 代码里没有采集这个字段,但是采集任务没有输出,运行一段时间后报错(内存不足),有什么办法解决这个问题

展开
收起
雪哥哥 2022-11-05 21:46:33 1255 0
3 条回答
写回答
取消 提交回答
  • GitHub https://github.com/co63oc/cloud

    字段内容保存到文件,用字段保存文件路径

    2022-11-24 17:28:58
    赞同 展开评论 打赏
  • 可以尝试加大flink任务资源,加⼤jobManager和taskManger内存(扩⼤4倍或更多),再看看效果。

    2022-11-24 07:30:31
    赞同 展开评论 打赏
  • 天下风云出我辈,一入江湖岁月催,皇图霸业谈笑中,不胜人生一场醉。

    物理和堆内存总量很难计算,因为它在很大程度上取决于您的用户代码、作业的拓扑结构以及您使用的状态后端。 根据经验,如果遇到 OOM 并且仍在使用FileSystemStateBackend或MemoryStateBackend,那么您应该切换到RocksDBStateBackend,因为如果状态变得太大,溢出到磁盘。

    如果仍然遇到所描述的 OOM 异常,那么您应该检查您的用户代码是否保留对状态对象的引用或以其他方式生成无法被垃圾收集的大对象。如果是这种情况,那么你应该尝试重构你的代码以依赖 Flink 的状态抽象,因为使用 RocksDB 它可以脱离核心。

    RocksDB 本身需要原生内存,这增加了 Flink 的内存占用。这取决于块缓存大小、索引、布隆过滤器和内存表。您可以在此处找到有关这些内容以及如何配置它们的更多信息。

    最后但并非最不重要的一点是,您不应taskmanager.memory.preallocate在运行流式作业时激活,因为流式作业当前不使用托管内存。因此,通过激活预分配,将为 Flink 的托管内存分配内存,这会减少可用的堆空间。

    2022-11-23 15:34:28
    赞同 展开评论 打赏

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

相关产品

  • 实时计算 Flink版
  • 相关电子书

    更多
    搭建电商项目架构连接MySQL 立即下载
    搭建4层电商项目架构,实战连接MySQL 立即下载
    PolarDB MySQL引擎重磅功能及产品能力盛大发布 立即下载

    相关镜像