我们试图在SQL中对DLQ处理进行全面的了解,以防反序列化失败。据我们所知,没有边输出等。使用SQL。我们使用Kafka连接器,如果它未能反序列化消息,则会抛出错误,从而导致作业停止。这个停止是可以的,但是在某些情况下,重新生成/消费所有消息会花费太长时间,并且我们的SLA不会得到满足。
我们使用Kafka连接器+ exactly-once语义+ rocksdb作为状态后端。例如,是否有一种方法可以跳过偏移量,或者你们使用不同的方法来实现?
我们还考虑在Kafka之前添加一个代理,这样我们甚至不能产生错误的消息,但整个公司需要更长的时间来设置和使用。
我们也考虑过编写自己的连接器,但这是显而易见的。有一个缺点,那就是如果不手动更新,就不能再更新最新的更新了。
1条答案
按热度按时间zaq34kh61#
一种解决方案是使用DataStream API来处理数据化,然后将结果DataStream转换为Table,以便使用SQL进行进一步处理。
或者,您可以将格式化逻辑放入一个UDF中,该UDF将字节数组行转换为有意义的数据行。然而,我不相信一个UDF可以使用副输出,所以你可能不得不依靠日志或指标来观察坏记录。