Apache Spark Streamingとは?
あぱっちすぱーくすとりーみんぐ
Apache Spark Streamingとは、Apache Sparkの拡張機能でデータストリームをマイクロバッチとして処理し、リアルタイムに近いデータ分析を実現する仕組みです。
Apache Spark Streamingは、大規模データ処理フレームワークApache Sparkの拡張モジュールで、リアルタイムに流れ続けるデータストリームを処理するために設計されています。現在はより新しいAPIであるStructured Streamingが主流となっていますが、Spark Streamingのコンセプトは多くのシステムで引き続き参照されています。
Spark Streamingの基本的なアプローチはマイクロバッチ処理です。入力データストリームをあらかじめ設定した短い時間間隔(例:1秒ごと)に区切り、各区間のデータをRDD(Resilient Distributed Dataset)として一括処理します。この方式により、既存のSparkエコシステム(SparkSQL・MLlib・GraphXなど)をそのまま使えるメリットがあります。
主な特徴は以下のとおりです。
- Kafka・Flume・Kinesis・TCP/IPソケットなど多様な入力ソースに対応
- HDFSやデータベースへの出力が可能
- ウィンドウ集計(滑動ウィンドウ・タンブリングウィンドウ)の組み込みサポート
- SparkのRDD操作(map・filter・reduceなど)をストリームデータにそのまま適用できる
マイクロバッチによる処理のため、Apache Flinkのようなネイティブストリームエンジンよりもレイテンシがやや高い(秒オーダー)のが特徴です。既存のSparkバッチ処理資産を活かしながらストリーム処理を追加したい場合に向いています。後継APIのStructured Streamingでは、より宣言的なAPIと改善されたウォーターマーク処理が提供されています。
使い方・例文
WebサービスのアクセスログをリアルタイムでKafkaに流し込み、Spark Streamingで10秒ごとにバッチ集計することで、異常なアクセス数の急増を検知する監視基盤として活用できます。
この用語をシェア
最終更新: