我正在阅读发布到PubSub主题的JSON消息,并在数据流中使用JDBCIO.write()
方法加载CloudSQL表。
我必须处理错误/无效的JSON消息场景(例如InvalidSchema,InvalidDatatype),以便流数据流作业不会在数据流图上显示错误。
在将数据加载到Bigquery中时,我们可以借助withFailedInsertRetryPolicy(InsertRetryPolicy.retryTransientErrors())
处理这些情况。
我试图通过在数据流作业中使用withRetryStrategy(RetryStrategy retryStrategy)
为CloudSQL处理这种情况。但是我仍然可以看到错误记录在流数据流作业中计数。因此,在数据流中接收到无效/错误的JSON消息后,我无法接收有效消息。
下面是withRetryStrategy()
方法的代码段:
.withRetryStrategy(new RetryStrategy() {
@Override
public boolean apply(SQLException sqlException) {
logger.warn("SQLState: " + sqlException.getSQLState() + "\t SQLException: "
+ sqlException.getMessage());
return false;
}
})
如果apply(SQLException)
返回 true ,则JDBCIO.write()
将无限次重试同一条语句。
在上面的代码中,我以覆盖的apply
方法返回了 false ,但仍然出现此问题。
因此,我尝试通过返回 true 来获得相同的结果。
有人建议在流数据流作业中如何处理这种类型的无效/错误记录场景以加载CloudSQL表吗?