可能由于代码错误或缺乏验证而导致进入Flink作业的数据触发异常。
我的目标是提供一致的异常处理方式,我们的团队可以在Flink作业中使用该方式,从而不会导致生产中断。

  • 重新启动策略似乎不适用于以下情况:
  • 简单重启无法解决问题,我们陷入重启循环
  • 我们不能简单地跳过事件
  • 它们可能对OOME或某些暂时性问题都有好处
  • 我们无法添加自定义一个
  • “keyBy”函数中的
  • try/catch块不能完全起到以下作用:
  • 处理异常后,无法跳过“keyBy”中的事件

  • 样例代码:
    env.addSource(kafkaConsumer)
        .keyBy(keySelector) // must return one result for one entry
        .flatMap(mapFunction) // we can skip some entries here in case of errors
        .addSink(new PrintSinkFunction<>());
    env.execute("Flink Application");
    

    我希望能够跳过处理导致“keyBy”出现问题的事件以及应该返回确切结果的类似方法。

    最佳答案

    您是否可以为keyBy保留一个特殊的值,例如“NULL”,以便在这种情况下返回?那么当遇到这样的值时,您的flatMap函数可以跳过吗?

    关于error-handling - Apache Flink- “keyBy”中的异常处理,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55468894/

    10-10 04:37