Hi Luna Wong. RichOutputFormat 实现的最终是由 Flink 提供的 OutputFormatSinkFunction 再包装成 SinkFunction。 OutputFormatSinkFunction 很早就 Deprecated 了,没有实现 CheckpointedFunction 。 jdbc 的是实现了 RichOutputFormat ,但是最后用 GenericJdbcSinkFunction 包装了一次, GenericJdbcSinkFunction 实现了 CheckpointedFunction, 刚好最近遇到 https://issues.apache.org/jira/browse/FLINK-20552 ,可以看下这个 BUG 的修复。
1.12 之前 : org.apache.flink.table.planner.plan.nodes.common.CommonPhysicalSink https://github.com/apache/flink/blob/release-1.12/flink-table/flink-table-planner-blink/src/main/scala/org/apache/flink/table/planner/plan/nodes/common/CommonPhysicalSink.scala#L97-L101 最新 1.13 : org.apache.flink.table.planner.plan.nodes.exec.common.CommonExecSink https://github.com/apache/flink/blob/master/flink-table/flink-table-planner-blink/src/main/java/org/apache/flink/table/planner/plan/nodes/exec/common/CommonExecSink.java#L153-L163 Luna Wong <gfen...@gmail.com> 于2021年4月8日周四 下午5:42写道: > 自定义Connector时,RichSinkFunction和RichOutputFormat可以选择一个进行实现,那么作为开发者应该如何选择呢? >