如何处理 Flink 中的应用程序错误



我目前想知道如何处理Apache Flink流应用程序中的应用程序错误。一般来说,我看到两种情况:

  1. 暂时性错误,您希望重播输入数据,并且处理可能会在第二次尝试时成功。例如,对暂时不可用的外部服务的依赖
  2. 永久性错误,重复处理仍将失败;例如无效的输入数据。

对于第一种情况,看起来常见的解决方案是抛出一些异常。或者有没有更好的方法,例如一种特殊的异常,以实现更有效的处理,例如来自 Apache Storm TridentFailedException(请参阅 Storm Trident 拓扑中的错误处理)。

对于永久性错误,我无法在网上找到任何信息。例如,map()操作总是必须返回一些东西,这样就不能像在 Trident 中那样静默地丢弃消息。

有哪些可用的 API 或最佳实践?感谢您的帮助。

自从这个问题被问到以来,已经有一些发展:

这个讨论是为什么侧输出应该有帮助的背景,关键摘录:

侧面输出(又名多路输出)是高度要求的功能之一在高保真流处理用例中。有了这个功能,Flink能

  • 端输出损坏输入数据,避免作业陷入"失效->重启->失效"循环
  • 侧输出稀疏接收延迟到达事件,同时在窗口计算中发出激进的水印。

这导致了 jira:FLINK-4460,该版本已在 Flink 1.1.3 及更高版本中解决。

<小时 />

我希望这有所帮助,如果需要更通用的解决方案,请考虑一下您的用例并考虑为其创建 jira。

相关内容

  • 没有找到相关文章