Итерационные вычисления в окне с Spark Streaming - PullRequest
0 голосов
/ 29 октября 2019

Я пытаюсь провести анализ итеративной потоковой обработки с использованием потоковой передачи Apache Spark. Цель состоит в том, чтобы создать окно и выполнить вычисления для оконных элементов. В Apache Flink или Apache Storm для этого предусмотрены API. Например, в Apache Storm функция предоставляет список элементов, принадлежащих конкретному окну. В Apache Flink содержится итератор элементов, принадлежащих окну. Но есть ли такая возможность с Spark Streaming? Я попробовал API документы и не смог найти четкого ответа. Цель в том, что мне нужно иметь доступ ко всем элементам, принадлежащим данному окну, и выполнять вычисления для этих элементов. Мне нужно запустить конечный цикл в этом списке элементов. Возможно ли это с помощью потоковой передачи Apache Spark?

Я попытался добавить окно, а затем функцию отображения, создать итерацию в драйвере и запустить функции отображения и обработки в цикле. Но это дает совершенно другой ответ.

for(i <- 1 to iterations) {

      newWStream = trainStream.map(s => {
      //mapping definition        
      })

      val newW: DStream[ArrayBuffer[Double]] = newWStream
        .reduce((w1, w2) => {
         //reduce after the mapping 
        })


      newW.foreachRDD((rdd, time) => {
         // do final test
         // broadcast the reduced value after evaluating it
      })

}

Это самое близкое, что я могу к нему получить. Но настоящая цель не в том, чтобы сделать сопоставление для элемента, а сделать что-то вроде ниже.

stream.window().windowfunction(new WindowFunction(List<T> windowElements){
// do iterative computation
})

Поддерживает ли Spark Streaming это?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...