問題タブ [stream-processing]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1370 参照

apache-flink - Apache Flink はチェックポイント/セーブポイントからどのように状態を復元しますか?

Apache Flink がチェックポイントからその状態を復元する方法を知る必要があります。これは、開始時刻と、セーブポイントから復元する純粋なジョブ バースを実行しているときにオペレーターで最初のイベントを確認することとの間に違いが見られないためです。

状態はチェックポイント/セーブポイントから遅延ロードされますか?

0 投票する
1 に答える
440 参照

java - DataStream での Flink sql クエリ (Apache Flink Java)

私はApache flinkに完全に慣れていません。手を汚そうとしているだけです。次のシナリオがあります。

  1. イベントのデータストリーム
  2. イベントのデータストリーム
  3. ルールのデータストリーム
  4. ruleID に基づいてこれら 2 つのデータストリームを結合

今私は tuple3 のようなデータストリームを持っています<ruleId, Rule, Event>。これらのルールは、イベントで実行したい SQL クエリです。

私は動的テーブルと Flink SQL の概念を経験していました。さらに処理する方法がわかりません。誰かがこれで私を助けてくれますか?

0 投票する
1 に答える
4413 参照

apache-kafka - 処理時間ウィンドウ内での Kafka ストリームの並べ替え

Kafka Streams DSL または Processor API を使用して、ウィンドウ内でレコードを並べ替える方法はあるのだろうか。

例として、次の状況を想像してください (任意の状況ですが、必要なものに似ています)。

  1. ユーザーのクリックなど、いくつかのイベントの Kafka トピックがあります。トピックに 10 個のパーティションがあるとします。メッセージはキーによって分割されますが、各キーは一意であるため、一種のランダムな分割です。各レコードにはユーザー ID が含まれており、後でストリームを再分割するために使用されます。

  2. ストリームを消費し、各メッセージを別のトピックに発行して、そのユーザー ID でレコードを分割します (元のストリームをユーザー ID で再分割します)。

  3. 次に、この再分割されたストリームを消費し、消費されたレコードを 10 分単位でウィンドウ化されたローカルの状態ストアに保存します。特定のユーザーのすべてのクリックは常に同じパーティションにありますが、元のトピックには 10 個のパーティションがあったため、順序は保証されません。

  4. 私は Kafka Streams のウィンドウ モデルを理解しており、その時間は新しいレコードが入ってくると進みますが、このウィンドウはイベント時間ではなく処理時間を使用する必要があり、ウィンドウが期限切れになったときにバッファリングされたものを並べ替えることができる必要がありますイベントを作成し、その順序で別のトピックに発行します。

知らせ:

  1. イベント時間ではなく、処理時間を使用してウィンドウ内でレコードをフラッシュ/処理できる必要があります。次のクリックで時間が進むのを待ちきれません。

  2. ウィンドウがソートされてフラッシュされるとすぐに、ストアからすべてのレコードを削除する必要があります。

  3. アプリケーションがクラッシュした場合、(アプリケーションの同じインスタンスまたは別のインスタンスで) 回復し、特定のユーザーの新しいレコードが来るのを待たずに、処理されなかったすべてのウィンドウを処理する必要があります。

Kafka Streams 1.0.0 では処理 API でウォール クロック時間を使用できることは知っていますが、必要なものを実装する正しい方法が何であるかはわかりません (さらに重要なのは、上記の回復プロセスの要件を考慮することです)。