Контрольные точки создаются Flink для восстановления после сбоев, а не для возобновления работы после выключения вручную. Когда задание отменяется, по умолчанию Flink удаляет контрольные точки. Поскольку задание больше не может завершиться ошибкой, его не нужно восстанавливать.
У вас есть несколько вариантов:
(1) Настройте контрольную точку на сохранение контрольных точек при задание отменено:
CheckpointConfig config = env.getCheckpointConfig();
config.enableExternalizedCheckpoints(
CheckpointConfig.ExternalizedCheckpointCleanup.RETAIN_ON_CANCELLATION);
Затем, когда вы перезапустите задание, вам нужно будет указать, что вы хотите перезапустить его с указанной c контрольной точки:
flink run -s <checkpoint-path> ...
В противном случае, когда вы запускаете задание, оно начнется с бэкэнда с пустым состоянием.
(2) Вместо отмены задания используйте остановить с точкой сохранения :
flink stop [-p targetDirectory] [-d] <jobID>
, после чего вам снова нужно будет использовать flink run -s ...
, чтобы возобновить работу с точки сохранения.
Остановка с помощью точки сохранения - более чистый подход, чем полагаться на недавнюю контрольную точку, к которой можно вернуться.
( 3) Или вы можете использовать Ververica Platform Community Edition , который поднимает уровень абстракции до такой степени, что вам не нужно самостоятельно управлять этими деталями.