ISBN 9784873118185

入門PySpark : PythonとJupyterで活用するSpark2エコシステム

入門PySpark : PythonとJupyterで活用するSpark2エコシステム
刊行
2017-11

概要

PythonからApache Sparkを使い分散処理・機械学習を実践する

想定読者

Pythonの基礎知識を持ち、大規模データ処理や機械学習基盤を構築したいデータエンジニア・データサイエンティスト

こんな人には向いていない

  • Python自体をこれから学び始める段階の入門者(Python基礎の習得を前提とした内容のため)
  • SparkをScalaやJavaから使う用途が主な読者(本書はPython APIに特化している)
  • 2017年末時点のSpark 2系の内容であるため、Spark 3以降の最新APIをリファレンスとして探している読者には情報が古い場合がある

読了後にできるようになること

  • RDDとDataFrameの違いおよびCatalystオプティマイザによる実行計画最適化の仕組みを説明できる
  • MLlibおよびMLパッケージを用いた分類・回帰・クラスタリングパイプラインをPySparkで実装できる
  • GraphFramesによるグラフ処理(PageRank・最短経路探索)をPythonから実行できる
  • Structured Streamingでリアルタイムデータ処理のジョブを構築できる
  • spark-submitコマンドでSparkアプリケーションをパッケージ化しDatabricks等にデプロイできる
  • JupyterとPySparkをローカル環境で連携させ、インタラクティブに分散処理を試す環境を整備できる

本書のキー概念(章解説)

  • 第 1 章 Sparkを理解する — RDD・DataFrame・Dataset・Spark 2.0アーキテクチャの全体像。まず読んでおくべき地図として機能する
  • 第 2 章 耐障害性分散データセット — RDDの変換(map/filter/flatMap等)とアクションを体系的に習得できる
  • 第 3 章 DataFrame — CatalystオプティマイザとSQL実行を含む実務直結の章。RDDより先にここを押さえたい場合は1章後に読むのが効率的
  • 第 4 章 データのモデリングの準備 — 欠落値・外れ値処理・相関分析と可視化。前処理の実務で繰り返し参照する
  • 第 5 章 MLlib — 統計分析・ロジスティック回帰・ランダムフォレストをMLlibで実装
  • 第 6 章 MLパッケージ — Transformer/Estimator/Pipelineの設計思想とハイパーパラメータチューニング
  • 第 7 章 GraphFrames — グラフ処理の入口として有用。PageRankと最短経路の実装例が具体的
  • 第 8 章 TensorFrames — TensorFlowとSparkを橋渡しする章。2017年当時の統合方法であり現在の環境とは差異に注意
  • 第 9 章 Blazeによるポリグロットパーシステンス — 複数データソースへのアクセス抽象化
  • 第 10 章 Structured Streaming — リアルタイムストリーミング処理の基礎。実務でのリアルタイム集計要件に直結
  • 第 11 章 Sparkアプリケーションのパッケージ化 — 本番環境へのデプロイ手順。Databricksユーザーには特に実践的な章

ハイライト

  • Apache SparkをPythonから使うための方法とノウハウを書いた書籍です。インメモリで高速に分散処理ができるフレームワークで、MLlibという機械学習ライブラリが利用できることなどから注目されています(本書の用途範囲(分散処理+機械学習)が端的に示されている箇所)
  • ↓の本の付録通りやっていけばできるのだが、いくつかハマったのでメモ。(環境構築の付録が実践的な手順を提供している一方、追加の注意点が必要であることを示す実務感覚)

外部からの言及

  • Qiita上の言及記事は主に環境構築(macOS + Jupyter + PySpark)を扱うものが多く、本書の付録をベースに環境を整える際の参考書として位置づけられている。サンプルコードの追体験より、まず動かす環境を作るフェーズで活用されている様子が見られる(qiita)
  • データ分析の高速化処理を学ぶための参考書リストにPySpark関連書として挙げられることがあり、Cython・Ray等と並ぶ並行処理学習の選択肢の一つとして認識されている(qiita)

編集メモ

Qiita言及3件 / 累計いいね3件。Spark 2系対象の2017年刊行書であり、Spark 3以降が主流となった現在は新規言及が限られる。PySparkの学習起点としての参照価値は残るが、community signalとしては補完的な位置づけ

読む前に押さえておきたいこと

  • PythonのリストやDict操作、関数定義、lambda式など基本的なPython文法
  • Jupyterノートブックの基本的な使い方
  • 機械学習の基礎概念(教師あり学習・教師なし学習・特徴量の意味)があると5〜6章の理解が深まる

学習のコツ

  • 1章でアーキテクチャ全体像を掴んだ後、3章(DataFrame)に先に進むと実務で最もよく使うAPIを早期に習得できる。2章(RDD)は概念理解として後回しにしても問題ない
  • 4〜6章は機械学習パイプラインの構築に集中している。MLの実装目的が主なら1・3章を読んでから直接4章に入ると学習曲線が緩やかになる
  • 付録A・Bの環境構築手順はPySpark 2.x時代のものであり、現在のPython/Java/Spark組み合わせとは差異が出る場合がある。Qiita等の補足情報と組み合わせて読むことを勧める
  • 8章(TensorFrames)は当時の統合手法であり現在はPySpark MLlib + PyTorchやTensorFlowの統合方法が変化している。学習よりも歴史的コンテキストとして読む位置づけが適切
出版社による内容紹介

Apache SparkをPythonから使うための方法とノウハウを網羅! PySparkとはSparkを実行するためのPython APIです。インメモリ(ソフトウェアを実行する際、使用するプログラムやデータのすべてをメモリ上に読み込み、ハードディスクなどの外部記憶装置を使わないこと)で高速に分散処理ができるフレームワークで、MLlibという機械学習ライブラリが利用できることなどから注目されています。本書は、Apache SparkをPythonから使うための方法とノウハウを書いた書籍です。

この本がどの学習段階で役立つかは、 関連する ロードマップ から確認できます。

質問に答えるだけで、
あなたに合う専門書が見つかる

IT・デザイン・士業・医療・経理・教育・研究 ほか、あらゆる分野の専門書と 「読む順序」(学習ロードマップ)を収録。何を選べばいいか分からなくても、 いくつかの質問に答えるだけでたどり着けます。