Как кешировать потоковый набор данных <Row> - PullRequest
0 голосов
/ 27 ноября 2018

У меня есть поток потокового Dataset<Row>, который передает каталог csv-файлов.Итак, у меня есть следующие вопросы:

  1. Как кэшировать набор потоковых данных.
  2. Как отправить мое искровое потоковое задание в YARN, поэтому мое потоковое задание должно работать вечно до тех пор, пока не прервется вручную изпользователь.

1 Ответ

0 голосов
/ 28 ноября 2018

Вы можете кэшировать ваши потоковые данные, используя функцию кеширования или сохранения, как указано ниже

 dstream.persist()

Делайте это только в том случае, если вы используете поток несколько раз.Для операций reducebywindow и reducebyKeyandWindow это выполняется автоматически.

В вашем потоковом задании, чтобы сохранить работу, вам нужно инициировать контекст потокового зажигания и запустить этот контекст

val ssc = new StreamingContext(sc, Seconds(1))
// your logic goes here
ssc.start()

ЕслиВаша работа будет убита после нескольких часов работы (и ваш кластер будет очищен), а затем проверьте, не истек ли срок действия билетов Kerberos.Это может привести к сбою долго выполняющегося задания.

Редактировать: Примечание. Если вы говорите конкретно о структурированной потоковой передаче.кеш в потоковых наборах данных не поддерживается .. проверьте этот пост Почему использование кеша в потоковых наборах данных завершается с ошибкой «AnalysisException: запросы с потоковыми источниками должны выполняться с writeStream.start ()»?

...