Apache Sparkとは
Apache Spark(アパッチスパーク)とは、大規模データの分散処理を高速に行うためのオープンソースのデータ処理エンジンです。カリフォルニア大学バークレー校で開発され、インメモリ処理により、従来のMapReduceと比較して最大100倍高速な処理が可能です。
| ひとことで言うと | 大規模データをメモリ上で高速に分散処理するエンジン。 |
|---|---|
| 何がうれしいか | Hadoopのディスク処理と比べて10〜100倍速い。SQLも機械学習も扱える。 |
| 注意点 | メモリを大量に使う。クラスタの設計と費用の見積もりが必要。 |
Sparkのコンポーネント
Sparkは複数のコンポーネントから構成されます。Spark SQL(構造化データのクエリ処理)、Spark Streaming(リアルタイムデータ処理)、MLlib(機械学習ライブラリ)、GraphX(グラフ処理)が統合されており、一つのプラットフォームで多様なデータ処理が可能です。
1データを分割複数ノードに配る
▶
2メモリ上で処理ディスクを使わない
▶
3処理を連鎖中間結果を書き出さない
▶
4最後にまとめる必要なときだけ実行
RDDとDataFrame
Sparkの基本的なデータ構造は、RDD(Resilient Distributed Dataset:耐障害性分散データセット)です。RDDは不変のデータコレクションで、分散環境でのフォールトトレランスを実現します。現在はより高水準で最適化されたDataFrame APIやDataset APIが推奨されています。
Sparkの活用シーン
ETLパイプライン、バッチ処理、ストリーミング処理、機械学習モデルの学習、インタラクティブなデータ分析など、幅広いユースケースで活用されています。PySpark(Python API)の登場により、データサイエンティストにとっても身近なツールとなっています。