0

これは基本的な質問かもしれませんが、私はこれを理解するのに苦労しています。スパークストリーミングユニオンストリーム並列化

私は現在、Spark/ScalaアプリケーションでMicrosoft Azureイベントハブストリーミングを使用しています。これはKafkaに似ています。

ユニオン化されたストリームを作成した場合、複数のDStreamオブジェクトが1つのDStreamのように抽象化され、ストリーム内の複数のRDDが並行して処理されるか、

この多くを試してみて、説明するために、ここでは簡単な例です:

sparkConf.set(SparkArgumentKeys.MaxCores, (partitionCount * 2).toString) 

val ssc = new StreamingContext(sparkConf, streamDuration) 

val stream = EventHubsUtils.createUnionStream(ssc, hubParams, storageLevel) 
stream.checkpoint(streamDuration) 

val strings = stream.map(f => new String(f)) 
strings.foreachRDD(rdd => { 
    rdd.map(f => f.split(' ')) 
}) 

partitionCountは紺碧のイベントハブ内のパーティションの数です。

  1. 最初の「stream.map」は、各RDDで並列に実行されますか?
  2. "string.foreachRDD"は一度に1つのRDDを処理するのですか、またはすべてのRDDを何らかの並列方法で処理しますか?各バッチの後

答えて

1

streamDuration後、スパークは、その後、(このRDDをマップします、1 RDDにすべてのこの時間に受信ウィンドウデータを収集しますので、再び:それは1 RDDだが、マップはちょうどマップと同じように、並行して行われますバッチジョブで)。

最後の手順として、各RDDに対して、foreachRDDの関数が実行されます。各RDDについては、各マイクロバッチ(時間ウィンドウ)からRDD上でが実行されることを意味します。

streamDuration時間後にもちろん

、データが再び収集され、RDDはforeachRDD

に与えられ、マップ、機能(最後のコレクションと現在の間の時間からのデータ)が作成されます

概要:foreachRDDが意味するものではありません一度に多くのRDDが実行されることを意味しますが、これはすべてのマイクロバッチ機能がこのマイクロバッチに適用されることを意味します。

+0

曖昧なので従うのがかなり難しい – thebluephantom

+0

@thebluephantomどういう意味ですか?あなたに何が変わったのか教えてください。 –

+0

まあ、私はforeachRDDを調べて、ドキュメントをある程度誤解を招くように見つけたので自分自身を投稿しました。それは厄介な話題です。私はあなたが私より先にいるのを見ます。しかし、法廷では、緑のダニに関係なく、それは私には分かりません。 – thebluephantom