第9章. 構造化ストリーミングの実際
この作品はAIを使って翻訳されている。ご意見、ご感想をお待ちしている:translation-feedback@oreilly.com
構造化ストリーミングAPIとプログラミングモデルの理解が深まったところで、この章では、小さいが完全なモノのインターネット(IoT)にインスパイアされたストリーミング・プログラムを作成する。
オンラインリソース
この例では、この本のオンラインリソース(https://github.com/stream-processing-with-spark)にあるStructured-Streaming-in-action ノートブックを使用する。
我々のユースケースは、Apache Kafkaからセンサーの読み取りストリームをストリーミングソースとして消費することである。
入ってくるIoTセンサーデータを、すべての既知のセンサーとその設定データを含む静的参照ファイルと関連付ける。 そうすることで、報告されたデータを処理するために必要な特定のセンサーパラメータで、入ってくる各レコードをリッチ化する。 その後、すべての正しく処理されたレコードをParquet形式のファイルに保存する。
Apache Kafka
Apache Kafka は、イベントドリブンシステムでプロデューサとコンシューマを分離するために使用される、スケーラブルなメッセージングブローカーとして最も人気のある選択肢の1つである。 分散コミットログの抽象化に基づく、スケーラブルな分散ストリーミングプラットフォームである。メッセージキューやエンタープライズメッセージシステムに似た機能を提供するが、3つの重要な分野で先行製品とは異なる:
-
実行はコモディティクラスター上に分散され、高いスケーラビリティを実現している。
-
フォールト・トレラント・データ・ストレージは、データの受信と配信の一貫性を保証する。
-
プルベースのコンシューマは、リアルタイム、マイクロバッチ、バッチと、異なる時間やペースでデータを消費することを可能にし、幅広いアプリケーションにデータを供給する可能性を作成する。
Kafkaはhttp://kafka.apache.org。
ストリーミング・ソースを消費する
私たちのプログラムの最初の部分は、ストリーミングDataset の作成を扱っている:
valrawData=sparkSession.readStream.format("kafka").option("kafka.bootstrap.servers",kafkaBootstrapServer).option("subscribe",topic).option("startingOffsets","earliest").load()>rawData:org.apache.spark.sql.DataFrame
構造化ストリーミングのエントリーポイントは、既存のSparkセッション(sparkSession )である。最初の行で理解できるように、ストリーミングDataset の作成は、代わりにread 操作を使用する静的Dataset の作成とほぼ同じである。sparkSession.readStream は、流動的なAPIを使用してストリーミングソースを構築するために必要な情報を収集するビルダーパターンを実装するクラス、DataStreamReader を返す。この 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