Вы можете кэшировать ваши потоковые данные, используя функцию кеширования или сохранения, как указано ниже
dstream.persist()
Делайте это только в том случае, если вы используете поток несколько раз.Для операций reducebywindow
и reducebyKeyandWindow
это выполняется автоматически.
В вашем потоковом задании, чтобы сохранить работу, вам нужно инициировать контекст потокового зажигания и запустить этот контекст
val ssc = new StreamingContext(sc, Seconds(1))
// your logic goes here
ssc.start()
ЕслиВаша работа будет убита после нескольких часов работы (и ваш кластер будет очищен), а затем проверьте, не истек ли срок действия билетов Kerberos.Это может привести к сбою долго выполняющегося задания.
Редактировать: Примечание. Если вы говорите конкретно о структурированной потоковой передаче.кеш в потоковых наборах данных не поддерживается .. проверьте этот пост Почему использование кеша в потоковых наборах данных завершается с ошибкой «AnalysisException: запросы с потоковыми источниками должны выполняться с writeStream.start ()»?