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

Flink CDC中Flink能捕获这类转换异常么?

Flink CDC中Flink能捕获这类转换异常么,如果转换异常的话,把值填空。
Caused by: java.lang.IllegalArgumentException: Unable to convert to long from unexpected value 'BsonInt32{value=112}' of type INT32
4b260a2a720a1574d7c7b689d407296a.png

展开
收起
小易01 2023-08-16 08:05:06 96 0
1 条回答
写回答
取消 提交回答
  • link CDC 不会捕获字段转换异常,你可以通过配置 cdc.field.converter.exception.handler 来处理这些异常。

    以下是默认的异常处理器:

    class DefaultFieldConverterExceptionHandler implements FieldConverterExceptionHandler {
    @Override
    public void handleException(
    String sourceTopic,
    String sourcePartition,
    long sourceOffset,
    String field,
    String typeName,
    Object value,
    ClassCastException exception) {
    logger.error("Failed to convert field '{}' in data record with topic {} partition {} offset {}: {}",
    field, sourceTopic, sourcePartition, sourceOffset, exception);
    }
    }
    你可以通过配置 cdc.field.converter.exception.handler.class 来替换默认的异常处理器。

    以下是一个自定义的异常处理器:

    class CustomFieldConverterExceptionHandler implements FieldConverterExceptionHandler {
    @Override
    public void handleException(
    String sourceTopic,
    String sourcePartition,
    long sourceOffset,
    String field,
    String typeName,
    Object value,
    ClassCastException exception) {
    // Do something with the exception, such as log it or rethrow it.
    }
    }
    你可以在 Flink CDC 的配置文件中配置异常处理器:

    cdc.field.converter.exception.handler.class = "com.example.CustomFieldConverterExceptionHandler"

    2023-09-22 11:16:05
    赞同 展开评论 打赏

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

相关产品

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

    更多
    Flink CDC Meetup PPT - 龚中强 立即下载
    Flink CDC Meetup PPT - 王赫 立即下载
    Flink CDC Meetup PPT - 覃立辉 立即下载