Apache Spark 構造化ストリーミングを探索する

完了

Apache Spark は、大規模なデータ分析のための分散処理フレームワークです。 Spark は、Microsoft Azure の次のサービスで使用できます。

  • Microsoft Fabric
  • Azure Databricks

Spark を使うと、複数のクラスター ノードで並列にコード (通常は、Python、Scala、または Java で書かれたもの) を実行し、非常に大量のデータを効率よく処理できます。 Spark は、バッチ処理とストリーム処理の両方に使用できます。

Spark 構造化ストリーミング

Spark でストリーミング データを処理するには、 Spark Structured Streaming ライブラリを 使用できます。このライブラリには、永続的なデータ ストリームからの結果の取り込み、処理、出力のためのアプリケーション プログラミング インターフェイス (API) が用意されています。

Spark Structured Streaming は、データのテーブルをカプセル化する、"データフレーム" と呼ばれる Spark のユビキタス構造を基にして構築されています。 Spark Structured Streaming API を使用して、Kafka ハブ、ファイル ストア、ネットワーク ポートなどのリアルタイム データ ソースから、ストリームからの新しいデータが継続的に設定される "境界のない" データフレームに、データを読み取ります。 次に、データフレームに対して、データの選択、プロジェクション、または集計 (多くの場合、テンポラル ウィンドウで) を行うクエリを定義します。 クエリの結果によって別のデータフレームが生成され、分析または追加の処理のためにそれを保持できます。

ストリーミング データの図はデータフレームに書き込まれ、分析用の別のデータフレームを作成するためにクエリが実行されます。

ストリーミング データを Spark ベースのデータ レイクや分析データ ストア内に組み込む必要がある場合には、Spark Structured Streaming がリアルタイム分析のための最適な選択肢となります。

注意

Spark 構造化ストリーミングの詳細については、Spark 構造化ストリーミング プログラミング ガイドを参照してください。

Delta Lake

Delta Lake はオープンソースのストレージ レイヤーであり、トランザクションの整合性、スキーマの適用、その他の一般的なデータ ウェアハウス機能のサポートを、データ レイク ストレージに追加します。 また、ストリーミング データとバッチ データのストレージが統合され、バッチ処理とストリーム処理両方のためのリレーショナル テーブルを定義するために Spark で使用できます。 ストリーム処理に使用するときは、Delta Lake テーブルを、リアルタイム データに対するクエリ用のストリーミング ソース、またはデータのストリームが書き込まれるシンクとして使用できます。

Microsoft Fabric と Azure Databricks の Spark ランタイムには、Delta Lake のサポートが含まれます。

Delta Lake と Spark Structured Streaming の組み合わせは、SQL ベースのクエリや分析のためのリレーショナル スキーマの背後にあるデータ レイクで、バッチおよびストリーミング処理されたデータを抽象化する必要がある場合に最適なソリューションです。

注意

Delta Lake の詳細については、Lakehouse テーブルと Delta Lake テーブルを参照してください。