2

私が正しいとすると、デフォルトでは、スパークストリーミング1.6.1は1つのスレッドを使用して各カフカパーティションからデータを読み込みます。私のカフカトピックパーティションは50と仮定します。各50個のパーティション内のメッセージは順番に読み込まれるか、ラウンドロビン方式で読み込まれます。Spark Streamingの各カフカパーティションから同時に読み取る方法

ケース1:

はい-If、その後、どのように私は、パーティション・レベルで読み出し動作を並列化しますか?複数のKafkaUtils.createDirectStreamを作成することは唯一の解決策ですか?

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

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

ケース2:

私のカフカパーティション-Ifは"--conf spark.streaming.kafka.maxRatePerPartition=3""--conf spark.streaming.blockInterval"プロパティは、このようなシナリオでは、画像に入ってくるんどのように、そして5つのメッセージ/秒を受信して​​いますか?

  • 異なるパーティションが、それは間隔に依存する第二のケースで平行
  • にアクセスされるが、一般にmaxRatePerPartitionが低い場合

    • 各パーティションが順次アクセスされる:直接モデルで

    答えて

    1

    実際のレート/秒のバッチウィンドウよりも常に遅れが出ます。

    +0

    を見ることができますメッセージを同時に消費する唯一のソリューションです。または、「maxRatePerPartition = value」に適切な値を設定すると、がおすすめ?私はDirectAPIがストリーミングUIでバックログのバッチを表示しないことに気付きました。これは、各バッチ間隔でオフセット範囲を計算するためです。受信したメッセージを格納する受信者のアプローチとは異なり、現在のバッチはバッチ間隔を超えています。 – nilesh1212

    +0

    もう1つの質問、spark.streaming.blockIntervalは、スパークパーティションとカフカパーティションの間で1-1の読み取りに適用されますか?火花が1-1のようにカフカのパーティションと話す。 – nilesh1212

    1

    ケース2では:スパークストリーミング受信機によって受信されたデータが に格納する前にデータのブロックにチャンクされる

    間隔:

    spark.streaming.blockInterval 
    

    のみ影響レシーバ、あなたがドキュメントを見ることができますスパーク。


    spark.streaming.kafka.maxRatePerPartition = 3 < 5(you say) 
    

    合計遅延が増加します私のカフカは、その後、複数のストリームを持つ、極端なスケールで大量のメッセージを保存している場合は、だから、この

    http://spark.apache.org/docs/latest/streaming-programming-guide.html#setting-the-right-batch-interval

    関連する問題