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