第7章. 構造化ストリーミングを導入する
この作品はAIを使って翻訳されている。ご意見、ご感想をお待ちしている:translation-feedback@oreilly.com
データ集約型の企業では、インターネットに接続されたサーバのログファイル、買い物の振る舞いを記録したテーブル、センサーデータを格納したNoSQLデータベースなど、多くの大規模データセットを発見する。 これらのデータセットはすべて、基本的なライフサイクルが同じである:これらのデータセットは、ある時点で空の状態から始まり、何らかの形で二次ストレージに送られた到着データ点によって徐々に埋められていく。このデータ到着のプロセスは、 、二次ストレージ上にデータストリームが実体化されることに他ならない。その後、私たちはこれらのデータセットにお気に入りの分析ツールを適用することができる。バッチ処理として知られるテクニックを使用するのは、一度に大規模なデータチャンクを処理するためであり、通常、完了するまでに数分から数日にわたるかなりの時間を要するからである。
Spark SQLの Dataset 抽象化 は、静止状態のデータを分析するそのような方法の1つである。 データが本質的に構造化されている、つまり定義されたスキーマに従っている場合に特に有用である。SparkのDataset API は、SQLライクなAPIの抽象化と、スキーマのコレクションやResilient Distributed Dataset (RDD)プログラミングモデルを彷彿とさせる型安全なコレクション演算を組み合わせたものである。
同時に、 Dataframe APIは、Python PandasやR Dataframesに似た性質を持っており、関数型パラダイムでの開発に慣れているデータエンジニアの初期コアにとどまらず、Sparkユーザの利用範囲を広げている。この高い抽象化レベルは、より幅広い専門家が使い慣れたAPIを使用してビッグデータ分析の列車に飛び乗ることを可能にすることで、最新のデータエンジニアリングとデータサイエンスの実践をサポートすることを意図している。
もし、データが"落ち着く"のを待つ代わりに、同じDataset の概念を、元のストリームの形のままデータに適用できるとしたらどうだろう?
構造化ストリーミング・モデルは、Dataset SQL指向モデルを拡張したもので、移動中のデータを扱うことができる:
-
データはソースストリームから到着し、定義されたスキーマを持っていると仮定される。
-
イベントのストリームは、境界のないテーブルに追加される行として見ることができる。
-
ストリームから結果を得るには、そのテーブルに対するクエリとして計算を表現する。
-
更新中のテーブルに同じクエリを継続的に適用することで、処理されたイベントの出力ストリームを作成する。
-
、その結果のイベントが出力シンクに提供される。
-
シンクは、ストレージシステム、別のストリーミングバックエンド、または処理されたデータを消費する準備ができたアプリケーションである。
このモデルでは、我々の 、理論的に束縛のないテーブルを、定義されたリソース制約のある物理システムに実装しなければならない。したがって、このモデルの実装には、無限に流入する可能性のあるデータに対処するための、ある種の考慮と制限が必要となる。
これらの課題に対処するため、構造化ストリーミングは、Dataset とDataFrame APIに新しい概念を導入している。例えば、 ...
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