【あぱっちすぱーく】
Apache Spark とは?
最終更新:
💡 データの処理を分け、複数の実行役で進める
大量のデータを分散処理するオープンソースの分析エンジン。driverとexecutor、メモリとディスク、分散処理の性能条件を解説します。
📌 このページのポイント
Apache Sparkは、何をするの?
処理は、誰が進める?
Hadoopより、必ず100倍速い?
Sparkは、全部メモリで処理する?
違うよ。データの再利用にメモリを使える一方、保存方法を選べるし、ディスクも使う。データを別の実行先へ配り直すシャッフルには、通信やディスクの入出力などの費用がかかる。
台数を増やすだけで、速くなる?
保証はない。小さい処理では準備や通信の負担もある。データの偏り、処理計画、資源などを確認する。全件をdriverへ集めるcollect()は、その一台のメモリを使い切る原因にもなる。
もっと詳しく知りたい人へ
cacheやpersistを使えば、どの処理でも速くなる?
繰り返し使うデータには役立ちますが、保持する資源も必要です。保存レベルにはメモリ、メモリとディスク、ディスクなどがあり、収まらない場合の扱いも異なります。再利用の有無と容量を確認します。
処理計画を見ると、何が分かる?
どの操作を実行し、データを再配置するシャッフルなどがあるかを確認できます。pandas API on Sparkにも実行計画を調べる機能があります。コードの見た目が短いことと、分散処理の費用が小さいことは別です。
まとめ:ざっくりこれだけ覚えればOK!
「Apache Spark」って出てきたら「大量のデータを分散処理するオープンソースの分析エンジン」と思えばだいたいOK!
📖 おまけ:英語の意味
「Apache Spark」 = 大規模なデータ分析エンジンのプロジェクト名
💬 Sparkは英語で火花を表します。Apache Software Foundationのプロジェクトで、名称が速度や特定の性能倍率を保証するわけではありません。