Apache Spark

Apache Spark

Apache Sparkとは

Apache Spark(アパッチスパーク)とは、大規模データの分散処理を高速に行うためのオープンソースのデータ処理エンジンです。カリフォルニア大学バークレー校で開発され、インメモリ処理により、従来のMapReduceと比較して最大100倍高速な処理が可能です。

表:Apache Sparkの要点まとめ
ひとことで言うと大規模データをメモリ上で高速に分散処理するエンジン。
何がうれしいかHadoopのディスク処理と比べて10〜100倍速い。SQLも機械学習も扱える。
注意点メモリを大量に使う。クラスタの設計と費用の見積もりが必要。

Sparkのコンポーネント

Sparkは複数のコンポーネントから構成されます。Spark SQL(構造化データのクエリ処理)、Spark Streaming(リアルタイムデータ処理)、MLlib(機械学習ライブラリ)、GraphX(グラフ処理)が統合されており、一つのプラットフォームで多様なデータ処理が可能です。

図:Sparkが速い理由
1データを分割複数ノードに配る
▶
2メモリ上で処理ディスクを使わない
▶
3処理を連鎖中間結果を書き出さない
▶
4最後にまとめる必要なときだけ実行

RDDとDataFrame

Sparkの基本的なデータ構造は、RDD(Resilient Distributed Dataset:耐障害性分散データセット)です。RDDは不変のデータコレクションで、分散環境でのフォールトトレランスを実現します。現在はより高水準で最適化されたDataFrame APIやDataset APIが推奨されています。

Sparkの活用シーン

ETLパイプライン、バッチ処理、ストリーミング処理、機械学習モデルの学習、インタラクティブなデータ分析など、幅広いユースケースで活用されています。PySpark(Python API)の登場により、データサイエンティストにとっても身近なツールとなっています。