メインコンテンツまでスキップ

構造化ストリーミングのリアルタイムモード

このページでは、構造化ストリーミングにおけるリアルタイムモードの概念について説明します。具体的には、リアルタイムモードとは何か、低遅延を実現する仕組み、そしていつ使用すべきかなどについて解説します。

リアルタイムモードとは何ですか?

リアルタイムモードは、構造化ストリーミングのトリガータイプの一つであり、エンドツーエンドの遅延がわずか5ミリ秒という超低遅延のデータ処理を可能にします。リアルタイムモードは、不正検出、リアルタイムパーソナライゼーション、即時意思決定システムなど、ストリーミングデータへの即時対応が必要な運用ワークロードに使用します。

リアルタイムモードが低遅延を実現する仕組み

リアルタイムモードは、以下の方法で実行アーキテクチャを改善します。

  • 長時間実行されるバッチ処理(デフォルトは5分)を実行します。この処理では、システムはソースからデータが利用可能になった時点で処理を行います。
  • クエリのすべての段階を同時にスケジュールする。これには、使用可能なタスク スロットの数が、バッチ内のすべてのステージのタスクの数以上である必要があります。
  • ストリーミングシャッフルを使用して、データが生成されたらすぐにステージ間でデータを渡す。

バッチ処理の終了時、そして次のバッチ処理が開始される前に、構造化ストリーミングは処理の進捗状況をチェックポイントとして記録し、メトリクスを公開します。バッチ処理時間はチェックポイントの頻度に影響します。

  • バッチサイズが大きい場合、チェックポイント処理の頻度が低くなるため、障害発生時のリプレイ時間が長くなり、メトリクスの取得が遅れることになります。
  • バッチサイズが小さい場合、チェックポイント処理がより頻繁に行われるため、レイテンシに影響を与える可能性があります。

Databricksは、適切なトリガー間隔を見つけるために、リアルタイムモードをターゲットワークロードに対してベンチマークすることを推奨しています。

リアルタイムモードはいつ使用すべきか

使用状況に応じてリアルタイムモードを選択してください。

  • サブ秒レベルのレイテンシ :データに対してミリ秒単位で応答する必要があるアプリケーション。例えば、通常とは異なる場所、高額な取引、または急激な支出パターンに基づいて不正利用スコアが閾値を超えた場合、クレジットカード取引をリアルタイムでブロックまたは警告する。
  • 運用上の意思決定 :受信したデータに基づいて即座に行動を起こすシステム。例えば、クリックストリームデータからユーザーが特定の製品を閲覧していることが分かった場合に、プロモーションメッセージを送信し、15分以内に購入すれば割引を提供する、といった具合です。
  • 継続的処理 :データが到着次第すぐに処理する必要があるワークロード。定期的なバッチ処理では対応できません。

ユースケースで以下の要件がある場合は、マイクロバッチモード(デフォルトの構造化ストリーミングトリガー)を使用してください。

  • 分析処理 : ETLパイプライン、データ変換、およびレイテンシ要件が秒または分単位で測定されるメダリオン アーキテクチャの実装。
  • コストの最適化 : 中断モードでは専用のコンピュート リソースが必要なため、1 秒未満のレイテンシが必要ないワークロード。
  • チェックポイントの頻度は重要です 。より頻繁なチェックポイントによって、より高速なリカバリが実現するアプリケーションがあります。

機能のサポートと制限

サポートされている環境、言語、コンピュート タイプ、ソース、シンク、演算子、既知の制限の完全なリストについては、 「夜間モード リファレンス」を参照してください。

その他のリソース