第21章. 構造化ストリーミングの基本
この作品はAIを使って翻訳されている。ご意見、ご感想をお待ちしている:translation-feedback@oreilly.com
ストリーム処理の概要を簡単に説明したところで、次は構造化ストリーミングに飛び込もう。この章では、構造化ストリーミングの重要な概念のいくつかを説明し、それをいくつかのコード例で応用することで、このシステムがいかに使いやすいかを示す。
構造化ストリーミングの基本
Structured Streamingは、第20章の最後で説明したように、Spark SQLエンジン上に構築されたストリーム処理フレームワークである。別のAPIを導入するのではなく、Structured StreamingはSparkの既存の構造化API(DataFrames、Datasets、SQL)を使用する。つまり、Sparkでおなじみの演算子はすべてサポートされている。ユーザは、静的データに対するバッチ計算と同じようにストリーミング計算を表現する。これを指定し、ストリーミング先を指定すると、Structured Streamingエンジンは、新しいデータがシステムに到着するたびに、クエリをインクリメンタルかつ継続的に実行する。これらの計算のための論理命令は、クエリの最適化やコード生成など、本書のパートIIで説明したのと同じCatalystエンジンを使って実行される。コアとなる構造化処理エンジンの他にも、Structured Streamingにはストリーミングに特化した多くの機能が含まれている。例えば、Structured Streamingは、エンド・ツー・エンド、ジャスト・ワンス処理、およびチェックポイントとライト・アヘッド・ログによるフォールト・トレランスを保証する。
構造化ストリーミングの主な考え方は、データのストリームを テーブルとして扱い、そこに継続的にデータを追加することである。ジョブは定期的に新しい入力データをチェックし、それを処理し、必要であればデータストアにある内部状態を更新し、結果を更新する。このAPIの基本は、バッチ処理やストリーム処理を行う際にクエリのコードを変更する必要がないことである。内部的には、Structured Streamingは自動的にクエリを "インクリメント "する方法、つまり新しいデータが到着するたびにその結果を効率的に更新する方法を見つけ出し、フォールトトレラントな方法で実行する。
図21-1. 構造化ストリーミング入力
最も簡単に言えば、構造化ストリーミングは「DataFrameをストリーミングする」ものだ。このため、ストリーミング・アプリケーションを使い始めるのはとても簡単だ。おそらくそのためのコードはすでに持っていることだろう!しかし、構造化ストリーミングで実行できるクエリの種類にはいくつかの制限があり、またイベントタイムやアウトオブオーダーデータなど、ストリーミング特有の新しい概念についても考えなければならない。これらについては、この章と次の章で説明する。
最後に、 Sparkの他の部分とインテグレーションすることで、Structured Streamingはユーザが継続的アプリケーションと呼ぶものを構築することを可能にする。コンティニュアスアプリケーションとは、ストリーミングジョブ、バッチジョブ、ストリーミングデータとオフラインデータの結合、インタラクティブなアドホッククエリなど、様々なツールを組み合わせることでリアルタイムにデータに反応する ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access