我有一个Spark流应用程序。它获取一批记录并对记录执行多个Map函数。
当.map阶段很少有记录失败时,我希望能够知道失败的原始id/记录,以便我可以将其置于边线并稍后重试。有没有人能在这方面提出建议?把try catch放在每个.map函数上听起来并不可行(如果这是唯一的方法,我应该尝试减少.map函数吗?))
既然像storm和flink这样的其他流媒体框架都达到了创纪录的水平,那么在那里实现边缘化会更容易吗?
我有一个Spark流应用程序。它获取一批记录并对记录执行多个Map函数。
当.map阶段很少有记录失败时,我希望能够知道失败的原始id/记录,以便我可以将其置于边线并稍后重试。有没有人能在这方面提出建议?把try catch放在每个.map函数上听起来并不可行(如果这是唯一的方法,我应该尝试减少.map函数吗?))
既然像storm和flink这样的其他流媒体框架都达到了创纪录的水平,那么在那里实现边缘化会更容易吗?
1条答案
按热度按时间63lcw9qa1#
使用Flink,你将使用ProcessFunction而不是map,并 Package 可能在try catch中失败的转换。然后将导致异常的记录发送到侧输出。
它看起来像这样: