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

Flink CDC设置哪个参数可以屏蔽掉无PK表的异常,不要让作业停止?

Flink CDC设置哪个参数可以屏蔽掉无PK表的异常,不要让作业停止?

展开
收起
真的很搞笑 2023-11-22 08:17:05 23 0
2 条回答
写回答
取消 提交回答
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    目前Apache Flink CDC暂未提供直接屏蔽无主键表异常的参数设置,因为在流处理过程中,必须要有唯一的标识才能保证数据准确性。当读取的数据表没有主键时,Flink CDC会抛出异常,并停止作业运行。
    但是,您可以采取一些变通的方式来处理无主键表的异常:

    1. 添加虚拟主键:在您的表中添加一个唯一的列,作为主键使用。这可能需要对表结构进行一定的修改,但可以使Flink CDC顺利运行。
    2. 处理异常:您可以在Flink SQL中捕获异常,并决定是否停止作业。例如:
    SELECT *
    FROM table
    ON FAIL (CONTINUE, DROP ROW);
    

    这段SQL语句告诉Flink遇到异常时继续运行,并丢弃错误的数据行。

    1. 自定义源:您也可以自定义源函数来处理异常,并继续运行作业。例如:
    public class MySourceFunction extends RichParallelSourceFunction<Row> {
        @Override
        public void run(SourceContext<Row> ctx) throws Exception {
            while (true) {
                try {
                    // 获取一行数据...
                    ctx.collect(row);
                } catch (Exception e) {
                    if (e instanceof NullPointerException || e instanceof SQLException) {
                        System.out.println("Encountered exception: " + e.getMessage());
                        // 直接跳过异常
                        continue;
                    }
                    throw new RuntimeException(e);
                }
            }
        }
    
        @Override
        public void cancel() {
        }
    }
    
    2023-11-29 14:15:42
    赞同 展开评论 打赏
  • 在Flink CDC中,如果希望屏蔽无主键表的异常并保持作业持续运行,可以尝试调整参数"ignore-not-found-pk-tables"。将其设置为"true",这样在处理无主键表时,作业将不会因为找不到主键而停止。这个参数能够允许Flink CDC在遇到这种情况时忽略错误并继续执行其他任务。

    2023-11-29 14:00:23
    赞同 1 展开评论 打赏

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

相关产品

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

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