我目前想知道如何处理Apache Flink流应用程序中的应用程序错误。一般来说,我看到两种情况:
对于第一种情况,看起来常见的解决方案就是抛出一些异常。或者有更好的方法,例如一种特殊的异常,用于更有效的处理,例如来自Apache Storm Trident 的FailedException
(参见Error handling in Storm Trident topologies)。
对于永久性错误,我在网上找不到任何信息。例如,map()
操作总是必须返回一些内容,这样就不能像在{em> Trident 中would一样静默地删除邮件。
有哪些可用的API或最佳做法?谢谢你的帮助。
答案 0 :(得分:1)
自从提出这个问题以来,已有一些进展:
此discussion具有why side outputs should help的背景,是密钥提取:
侧面输出(又称多输出)是高度要求的功能之一 在高保真流处理用例中。借助此功能,Flink 可以
- 侧面输出损坏的输入数据,避免作业陷入“失败->重新启动->失败”周期
- 在窗口计算中发出激进的水印时,侧面输出稀疏地接收到了迟到事件。
这导致jira:FLINK-4460在Flink 1.1.3及更高版本中已解决。
我希望这会有所帮助,如果需要更通用的解决方案,请仔细考虑您的用例,并考虑为其创建一个jira。