数据同步问题

更新时间:2025-03-24 08:25:05

本文为您介绍数据同步方面的常见问题。

同步Kafka JSON数据到Hologres,作业运行过程中JSON Schema发生改变,如何解决?

常规做法是停止Flink作业,修改代码并调整Hologres表结构后重新上线,这样可能会导致作业数据延时以及出现不必要的错误。

针对以上的问题,实时计算Flink版做了以下优化来规避该问题:

  • 支持Kafka JSON format Schema自适应变更。即使JSON Schema发生改变,也无需停止作业或修改SQL语句,系统会自动将变更的Schema同步到Hologres。

  • 支持Kafka JSON format的类型推导,不需要在DDL语句声明JSON里面的字段类型。

  • 支持递归式展开JSON的嵌套列,例如对于如下JSON数据:{"nested": {"col": true}}col会被展开为nested.col

报错:Encountered change event for table xxx.xxx whose schema isn't known to this connector

  • 问题详情

    image.png

  • 问题原因

    在开启CDASCTAS新增表读取功能时,出现该报错的原因如下:

    • 当数据库用户缺少作业中使用的某些数据库所需的权限时,可能会出现该错误。

    • 作业中配置了'debezium.snapshot.mode'='never'。因为这会导致从Binlog开头读取数据,但是Binlog开头的变更事件对应的Table Schema和当前表的Schema可能不匹配,所以会报该错。

    • 遇到Debezium解析不了的变更,例如Debezium无法解析`DEFAULT (now())`,可能出现该错误。

  • 解决方案

    • 确保数据库用户拥有作业所需的所有数据库权限(通常需要读取、写入、修改数据、创建和修改表结构、以及创建表的权限,具体所需权限详情请参见对应连接器文档)。

    • 通过'debezium.inconsistent.schema.handling.mode' = 'warn'参数避免报错,不建议使用'debezium.snapshot.mode'='never'

    • 继续观察日志,查询io.debezium.connector.mysql.MySqlSchema WARNlog,会打印出具体无法解析的变更详情,例如Debezium解析不了`DEFAULT (now())`

报错:Currently does not support merge StreamExecMiniBatchAssigner type ExecNode in CTAS/CDAS syntax

  • 问题详情

    image.png

  • 问题原因

    CTASCDAS语法不支持MiniBatch配置。

  • 解决方案

    对于已部署的SQL作业,若需要调整MiniBatch配置,请重新创建新的SQL作业,而非直接修改现有作业的配置并重启。

    重要

    在创建SQL作业之前,请确保配置管理页面的作业默认配置页签中的其他配置处删除了MiniBatch配置。

    image

  • 本页导读 (1)
  • 同步Kafka JSON数据到Hologres,作业运行过程中JSON Schema发生改变,如何解决?
  • 报错:Encountered change event for table xxx.xxx whose schema isn't known to this connector
  • 报错:Currently does not support merge StreamExecMiniBatchAssigner type ExecNode in CTAS/CDAS syntax
AI助理

点击开启售前

在线咨询服务

你好,我是AI助理

可以解答问题、推荐解决方案等