2

KafkaソースからSpark DStreamをコンシューマとしてストリーミングすると、スパークコンテキストをチェックポイントできるので、アプリがクラッシュしたとき(またはkill -9の影響を受ける)、アプリはコンテキストチェックポイントから回復する。しかし、アプリが「誤って悪いロジックでデプロイされている」場合は、最後のトピック+パーティション+オフセットに戻って、特定のKafkaトピックのパーティションのオフセット位置からイベントを再生し、「不良ロジック」の前にうまくいきたい場合があります。チェックポイント機能が有効になっている場合、ストリーミングアプリは最後の「良い点」(トピック+パーティション+オフセット)にどのように巻き戻されますか?KafkaソースからのSparkストリーミングチェックポイントまたは巻き戻しに戻る

注:I(ハート)ログで、Jay Krepsは、発散したカフカのオフセット位置から始まり、元のデータに追いついてから元のデータを消去するまで、並列消費者(グループ)プロセスを使用します。 (この第2スパークストリーミングプロセスは、特定のパーティション/オフセットの場所からの開始に関してどのように見えるのですか)

サイドバー:この問題は、同様のメカニズムを展開する必要がある可能性があるので、Mid-Stream Changing Configuration with Check-Pointed Spark Streamに関連している可能性があります。

答えて

1

実行中のストリームを巻き戻すことはできません。SparkStreamingContextこれは、(ストレートドキュメントから)以下の点を考慮しておくことが重要です:コンテキストが開始された後

  • 、新たなストリーミング計算が設定されなかったり、それに追加することができます。
  • コンテキストが停止すると、コンテキストを再起動できません。
  • 同時に1つのStreamingContextをJVMでアクティブにすることができます。
  • StreamingContextのstop()もSparkContextを停止します。 StreamingContextのみを停止するには、stopSparkContextというオプションのstop() のパラメータをfalseに設定します。 A SparkContextが複数のStreamingContextsを作成するために再使用することができます
  • 、次StreamingContextが
  • 代わり

を作成する前に、以前のStreamingContextが( SparkContextを停止せずに)停止している限り、あなたがしようとしています現在のストリームを停止して新しいストリームを作成する必要があります。 のバージョンの1つを使用して、特定のオフセットのセットからストリームを開始することができます。fromOffsetsのパラメータには、Map[TopicAndPartition, Long]の署名が付いています。トピックとパーティションによってマップされる開始オフセットです。

KafkaUtils.createRDDを使用して、オフセット範囲を入力として使用することも考えられます。あなたの "悪い論理"はオフセットXで始まり、それをオフセットYで固定したとしましょう。特定の使用例では、XからYへのオフセットでcreateRDDを行い、その結果をストリーム。

関連する問題