2017-02-11 5 views
1

В основном я потребляю данные из нескольких тем кафки, используя одного пользователя Spark Streaming [Direct Approach].Как преобразовать DStream количества RDD в Single RDD

val dStream = KafkaUtils.createDirectStream[String, String, StringDecoder, StringDecoder](ssc, kafkaParams, topicsSet).map(_._2) 

Сегментный интервал 30 Seconds.

У меня есть несколько вопросов здесь.

  1. Будет ли DStream содержать несколько RDD вместо Single RDD, когда я вызываю foreachRDD на DStream? будет ли каждая тема создавать отдельные RDD?
  2. Если да, я хочу объединить все RDD в одиночный RDD, а затем обработать данные. Как мне это сделать?
  3. Если мое время обработки больше, чем периодический интервал, будет ли DStream содержать более одного RDD?

Я попытался подключить DSTream RDD к одиночному RDD, используя нижеследующий путь. Прежде всего, мое понимание правильное? Если DStream всегда возвращает одиночный RDD, тогда код ниже не требуется.

Пример кода:

var dStreamRDDList = new ListBuffer[RDD[String]] 
dStream.foreachRDD(rdd => 
     { 
      dStreamRDDList += rdd 
     }) 
val joinedRDD = ssc.sparkContext.union(dStreamRDDList).cache() 

//THEN PROCESS USING joinedRDD 
//Convert joinedRDD to DF, then apply aggregate operations using DF API. 

ответ

1

Будет DStream содержит многократный РДД вместо Единого РДУ, когда я называю foreachRDD на DStream? будет ли каждая тема создавать отдельные RDD?

Нет. Несмотря на то, что у вас есть несколько тем, у вас будет один RDD в любом данном периодическом интервале.

Если мое время обработки больше, чем периодический интервал, будет ли DStream содержать более одного RDD?

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

В качестве примечания, убедитесь, что вы на самом деле нужно использовать foreachRDD, или, если возможно, you're misusing the DStream API (отказ от ответственности: я являюсь автором этого поста)

+0

Спасибо, я прочитал ваш пост и вернуться ...:) – Shankar

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