データを分けて多くのマシンで並列に処理する。データの偏り(スキュー)とシャッフルが遅さの原因。
Spark は、大きなデータを小さな塊(パーティション)に分け、多くのマシン(エグゼキューター)で並列に処理するエンジンです。DataFrame や SQL で書くと、Spark が実行計画を作って分散させます。DWH の SQL では難しい大量のファイル処理や、Python での複雑な変換、機械学習の前処理によく使います。
| 言葉 | 意味 |
|---|---|
| ドライバー | 実行計画を作り、仕事を配る役 |
| エグゼキューター | 実際に計算するマシン(のプロセス) |
| パーティション | データの小さな塊。1つのタスクが1つを処理する |
| DataFrame・SQL | Spark に「何をしたいか」を伝える書き方。Spark が最適な手順を考える |
面接ではこう答える
Spark は、大きなデータをパーティションという小さな塊に分け、多くのエグゼキューターで並列に処理するエンジンです。DataFrame や SQL で書くと、ドライバーが実行計画を作って仕事を配ります。DWH の SQL では難しい大量のファイルの処理や Python での複雑な変換、ML の前処理によく使います。遅くなる主な原因は、データを送り合うシャッフルと、データの偏りのスキューです。
Dataとの関わりレイクの大きなデータを変換するときの主力で、ジョブが遅い・落ちるときの調査に仕組みの理解が要ります。