2016-07-27 2 views
1

У меня есть followingcode:Спарк Streaming Обновление от параметра Кафка Direct Stream

//Set basic spark parameters 
val conf = new SparkConf() 
    .setAppName("Cartographer_jsonInsert") 
val sc = new SparkContext(conf) 
val ssc = new StreamingContext(sc, Seconds(2)) 

val messagesDStream = KafkaUtils.createDirectStream[String, String, StringDecoder, StringDecoder, Tuple4[String, Int, Long, String]](ssc, getKafkaBrokers, getKafkaTopics("processed"), (mmd: MessageAndMetadata[String, String]) => { 
    (mmd.topic, mmd.partition, mmd.offset, mmd.message().toString) 
}) 

getKafkaBrokers и getKafkaTopics называет API, который проверяет базу данных для конкретных новых Темы, как мы добавим их в нашу систему. Поддерживает ли SSC при работе обновление переменных каждой итерации? Итак, когда-либо messageDStream будет воссоздаваться с новыми переменными каждый раз?

Не похоже, что это так, есть ли способ, чтобы это произошло?

ответ

1

Татхагата Дас, один из создателей Spark Streaming, ответил на аналогичный вопрос в Spark User List относительно модификаций существующих DStream.

В настоящее время Spark Streaming не поддерживает добавление/удаление/модификацию DStream после того, как был запущен контекст потоковой передачи. Также вы не можете перезапустить остановленный потоковый контекст. Кроме того, несколько искровых контекстов (и, следовательно, множественные контексты потоков) не могут одновременно запускаться в одной и той же JVM.

Я не вижу прямого способа реализации этого с помощью Spark Streaming, так как у вас нет способа обновить график. Вам нужно гораздо больше контроля, чем в настоящее время. Возможно, решение основано на Reactive Kafka, разъем Akka Streams для Kafka. Или любое другое потоковое решение, в котором вы контролируете источник.

0

Любые причины, по которым вы не используете Akka Graph с реакционно-кафкой (https://github.com/akka/reactive-kafka). очень легко построить реактивный поток, где источнику может быть задана тема, поток для обработки сообщений и приемник, чтобы потопить результат.

Я построил пример приложения, используя тот же https://github.com/asethia/akka-streaming-graph

+0

Потому что это первый раз, когда я когда-либо слышал об этом проекте. – theMadKing

Смежные вопросы