私が正しいとすると、デフォルトでは、スパークストリーミング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
が低い場合
- 各パーティションが順次アクセスされる:直接モデルで
を見ることができますメッセージを同時に消費する唯一のソリューションです。または、「maxRatePerPartition = value」に適切な値を設定すると、がおすすめ?私はDirectAPIがストリーミングUIでバックログのバッチを表示しないことに気付きました。これは、各バッチ間隔でオフセット範囲を計算するためです。受信したメッセージを格納する受信者のアプローチとは異なり、現在のバッチはバッチ間隔を超えています。 – nilesh1212
もう1つの質問、spark.streaming.blockIntervalは、スパークパーティションとカフカパーティションの間で1-1の読み取りに適用されますか?火花が1-1のようにカフカのパーティションと話す。 – nilesh1212