構造化ストリーミングのリアルタイムモード
このページでは、構造化ストリーミングにおけるリアルタイムモードの概念について説明します。具体的には、リアルタイムモードとは何か、低遅延を実現する仕組み、そしていつ使用すべきかなどについて解説します。
リアルタイムモードとは何ですか?
リアルタイムモードは、構造化ストリーミングのトリガータイプの一つであり、エンドツーエンドの遅延がわずか5ミリ秒という超低遅延のデータ処理を可能にします。リアルタイムモードは、不正検出、リアルタイムパーソナライゼーション、即時意思決定システムなど、ストリーミングデータへの即時対応が必要な運用ワークロードに使用します。
リアルタイムモードが低遅延を実現する仕組み
リアルタイムモードは、以下の方法で実行アーキテクチャを改善します。
- 長時間実行されるバッチ処理(デフォルトは5分)を実行します。この処理では、システムはソースからデータが利用可能になった時点で処理を行います。
- クエリのすべての段階を同時にスケジュールする。これには、使用可能なタスク スロットの数が、バッチ内のすべてのステージのタスクの数以上である必要があります。
- ストリーミングシャッフルを使用して、データが生成されたらすぐにステージ間でデータを渡す。
バッチ処理の終了時、そして次のバッチ処理が開始される前に、構造化ストリーミングは処理の進捗状況をチェックポイントとして記録し、メトリクスを公開します。バッチ処理時間はチェックポイントの頻度に影響します。
- バッチサイズが大きい場合、チェックポイント処理の頻度が低くなるため、障害発生時のリプレイ時間が長くなり、メトリクスの取得が遅れることになります。
- バッチサイズが小さい場合、チェックポイント処理がより頻繁に行われるため、レイテンシに影響を与える可能性があります。
Databricksは、適切なトリガー間隔を見つけるために、リアルタイムモードをターゲットワークロードに対してベンチマークすることを推奨しています。
リアルタイムモードはいつ使用すべきか
使用状況に応じてリアルタイムモードを選択してください。
- サブ秒レベルのレイテンシ :データに対してミリ秒単位で応答する必要があるアプリケーション。例えば、通常とは異なる場所、高額な取引、または急激な支出パターンに基づいて不正利用スコアが閾値を超えた場合、クレジットカード取引をリアルタイムでブロックまたは警告する。
- 運用上の意思決定 :受信したデータに基づいて即座に行動を起こすシステム。例えば、クリックストリームデータからユーザーが特定の製品を閲覧していることが分かった場合に、プロモーションメッセージを送信し、15分以内に購入すれば割引を提供する、といった具合です。
- 継続的処理 :データが到着次第すぐに処理する必要があるワークロード。定期的なバッチ処理では対応できません。
ユースケースで以下の要件がある場合は、マイクロバッチモード(デフォルトの構造化ストリーミングトリガー)を使用してください。
- 分析処理 : ETLパイプライン、データ変換、およびレイテンシ要件が秒または分単位で測定されるメダリオン アーキテクチャの実装。
- コストの最適化 : 中断モードでは専用のコンピュート リソースが必要なため、1 秒未満のレイテンシが必要ないワークロード。
- チェックポイントの頻度は重要です 。より頻繁なチェックポイントによって、より高速なリカバリが実現するアプリケーションがあります。
機能のサポートと制限
サポートされている環境、言語、コンピュート タイプ、ソース、シンク、演算子、既知の制限の完全なリストについては、 「夜間モード リファレンス」を参照してください。