構造化ストリーミングの概念
この記事では、Azure Databricks での構造化ストリーミングについて紹介します。
構造化ストリーミングとは
Apache Spark 構造化ストリーミングはほぼリアルタイムの処理エンジンです。使い慣れた Spark API を使用し、厳密に 1 回の処理でエンドツーエンドのフォールト トレランスが提供されます。 構造化ストリーミングでは、静的データに対するバッチ計算を表現するのと同じように、ストリーミング データに対する計算を表現できます。 構造化ストリーミング エンジンは、ストリーミング データの受信と並行して、段階的に計算を実行し、継続的に結果を更新します。
データ ストリームからの読み取り
構造化ストリームを使用して、サポートされているデータ ソースからデータを増分的に取り込むことができます。 一般的なデータ ソースには、次のようなものがあります。
- クラウド オブジェクト ストレージ内のデータ ファイル。 「自動ローダー」を参照してください。
- メッセージ バスとキュー。 「ストリーミング データ ソースを構成する」を参照してください。
- Delta Lake。 「差分テーブルのストリーミング読み取りと書き込み」を参照してください。
各データ ソースには、データのバッチを読み込む方法を指定するためのオプションが多数用意されています。 閲覧者の設定中に、次の操作を行うオプションの設定が必要になる場合があります。
- データ ソースまたは形式 (ファイルの種類、区切り記号、スキーマなど) を指定します。
- ソース システムへのアクセス (ポート設定や資格情報など) を設定します。
- ストリームの開始位置 (Kafka オフセットや既存のすべてのファイルの読み取りなど) を指定します。
- 各バッチで処理されるデータの量 (バッチあたりの最大オフセット、ファイル、バイト数など) を制御します。 「Azure Databricks で構造化ストリーミングのバッチ サイズを設定する」を参照してください。
データ シンクへの書き込み
データ シンクは、ストリーミング書き込み操作のターゲットです。 Azure Databricks ストリーミング ワークロードで使用される一般的なシンクには、次のようなものがあります:
- Delta Lake
- メッセージ バスとキュー
- キー値データベース
データ ソースと同様に、ほとんどのデータ シンクには、ターゲット システムへのデータの書き込み方法を制御するためのオプションが多数用意されています。 ライターの構成中に、次のオプションを指定します。
- 出力モード (既定では追加)。 「構造化ストリーミングの出力モードを選択する」を参照してください。
- チェックポイントの場所 (各 書き込み者 に必要)。 「構造化ストリーミング チェックポイント」を参照してください。
- トリガー間隔。 「構造化ストリーミングのトリガー間隔を構成する」を参照してください。
- データ シンクまたは形式を指定するオプション (ファイルの種類、区切り記号、スキーマなど)。
- ターゲット システムへのアクセスを構成するオプション (ポート設定や資格情報など)。