2017-02-08 12 views
0

У меня есть потоковое приложение, которое считывает данные от Aws Kinesis.Spark Streaming with Kinesis - Как заставить контрольно-пропускной пункт?

По умолчанию при создании ресиверов потока вы можете выбрать, с какого интервала сделать контрольную точку, что делается на DynamoDB.

В какой-то момент я хотел бы остановить свое приложение (sparkStreamingContext.stop()), но до этого я хотел бы заставить контрольно-пропускной пункт.

Возможно ли это?

Я знаю, что если контрольная точка будет в файловой системе, я должен сделать sparkStreamingContext.checkpoint(directoryName), но контрольная точка для кинезиса находится на DynamoDB, так как я могу это сделать?

Спасибо!

ответ

0

Запрещение контрольно-пропускного пункта невозможно. Checkpointing - это своего рода деталь реализации Spark в средствах восстановления и обеспечения доставки сообщений. Таким образом, вы не можете просто «вызвать контрольную точку», как хотите.

Если вы действительно хотите контролировать, когда происходит сохранение данных, вам также нужно будет управлять самим состоянием.

+0

Итак, какова функция sparkStreamingContext.checkpoint (directoryName) для? И как я могу гарантировать, что, когда я останавливаю приложение, проверяются только обработанные данные, а не все полученные данные (например, если моя микро-партия опаздывает и требуется больше, чем интервал микро-пакетной обработки) ?) – nicola

+0

@nicola Он должен сказать Спарку, в какой каталог он должен проходить контрольно-пропускной пункт. Лучшее, что вы можете сделать, это установить изящное завершение через 'sparkConf.set (" spark.streaming.stopGracefullyOnShutdown "," true ")' –