Как RDD создаются в структурированном потоке в искре? - PullRequest
0 голосов
/ 24 ноября 2018

Как RDD создаются в структурированной потоковой передаче в Spark?В DStream у нас есть для каждого пакета, он создается, как только становятся доступными данные или происходит триггер?Как он физически распределяет СДР между исполнителями?

1 Ответ

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

Внутри DStream представлен как последовательность RDD, которая является абстракцией Spark неизменяемого, распределенного набора данных.Каждый RDD в DStream содержит данные за определенный интервал

В примере подсчета слов: -

import org.apache.spark.streaming.StreamingContext._ // not necessary since Spark 1.3
// Count each word in each batch
val pairs = words.map(word => (word, 1))
val wordCounts = pairs.reduceByKey(_ + _)

// Print the first ten elements of each RDD generated in this DStream to the console
wordCounts.print()

Таким образом, RDD создается в драйвере для блоков, созданных во время batchInterval.Блоки, сгенерированные во время batchInterval, являются разделами RDD.Каждый раздел является задачей в искре.blockInterval == batchinterval будет означать, что один раздел создан и, вероятно, он обрабатывается локально.

DStreams выполняются с лёгкостью с помощью операций вывода, так же как RDD лениво выполняются с помощью RDD.

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

DStream на самом деле является последовательностью СДР из кода DStream: -

  // RDDs generated, marked as private[streaming] so that testsuites can access it
  @transient
  private[streaming] var generatedRDDs = new HashMap[Time, RDD[T]]()

количество сгенерированных исполнителей зависит от раздела, а также от конфигурациипредоставлено.

Обычно в конфигурации есть два типа выделения: статическое и динамическое.Вы можете прочитать о них здесь: -

http://site.clairvoyantsoft.com/understanding-resource-allocation-configurations-spark-application/

...