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)すべてforeachRDD、countなどのActionアクションを持っています。
プログラミング モデルは一貫しています。
(B) SparkストリーミングにおけるDStreamの導入
DStream にはいくつかのクラスが含まれています。
(1)InputDStream(DirectKafkaInputStreamなどに特有のもの)などのデータソースクラス
(2)変換クラス(典型的にはMappedDStream、ShuffledDStream)
(3) 出力クラス(典型的にはForEachDStreamなど)
以上のことから、データの始まり(入力)から終わり(出力)までが DStream システムによって行われるということは、通常、ユーザーが直接 RDD を生成したり操作したりできないことを意味し、DStream が RDD のライフサイクルを担当する機会と義務を持っていることを意味します。
つまり、Spark Streamingには自動クリーンアップ関数。
(iii) Spark StreamingにおけるRDD生成プロセス
Spark Streaming における RDD のライフフローは、おおよそ次のようになります。
(1)InputDStreamでは受信したデータをDirectKafkaInputStreamなどのRDDに変換し、KafkaRDDを生成します。
(2)その後MappedDStreamなどのデータ変換を経て、今度は変換用のマップメソッドに対応するRDDを直接呼び出します。
(3)出力クラスの操作では、RDDが公開されている場合にのみ、ユーザーが対応するストレージやその他の計算、およびその他の操作を実行できるようにすることができます。