Механизм очистки данных Spark Streaming
(I) DStream и RDD
Как мы знаем, вычисления Spark Streaming основаны на Spark Core, а ядром Spark Core является RDD, поэтому Spark Streaming также должен быть связан с RDD. Однако Spark Streaming не позволяет пользователям использовать RDD напрямую, а абстрагирует набор концепций DStream. DStream и RDD являются взаимодополняющими отношениями, что можно рассматривать как шаблон декорирования в Java, то есть DStream — это расширение RDD, но его поведение похоже на RDD.
У DStream и RDD есть несколько условий.
(1) имеют похожие действия преобразования, такие как map, reduceByKey и т. д., но также и некоторые уникальные, такие как Window, mapWithStated и т. д.
(2) все имеют действия Action, такие как foreachRDD, count и т. д.
Модель программирования является последовательной.
(B) Введение DStream в Spark Streaming
DStream содержит несколько классов.
(1) Классы источников данных, такие как InputDStream, такие как DirectKafkaInputStream и т. д.
(2) Классы преобразования, обычно MappedDStream, ShuffledDStream
(3) выходные классы, обычно такие как ForEachDStream
Исходя из вышесказанного, данные от начала (ввода) до конца (вывода) обрабатываются системой DStream, что означает, что пользователь обычно не может напрямую генерировать и манипулировать RDD, а это значит, что DStream имеет возможность и обязанность нести ответственность за жизненный цикл RDD.
Другими словами, Spark Streaming имеетавтоматическая очисткафункция.
(iii) Процесс генерации RDD в Spark Streaming
Жизненный поток RDD в Spark Streaming выглядит примерно следующим образом.
(1) В InputDStream полученные данные преобразуются в RDD, например DirectKafkaInputStream, который генерирует KafkaRDD.
(2) затем через MappedDStream и другие преобразования данных, на этот раз напрямую вызывается RDD, соответствующий методу отображения для преобразования
(3) В операции выходного класса, только когда RDD открыт, вы можете разрешить пользователю выполнять соответствующее хранение, другие вычисления и другие операции.