入門 PySpark

―PythonとJupyterで活用するSpark 2エコシステム

[cover photo]
TOPICS
Data Science , Database , Python
発行年月日
PRINT LENGTH
328
ISBN
978-4-87311-818-5
原書
Learning PySpark
FORMAT
Print PDF
Ebook
3,740円
Ebookを購入する
Print
3,740円

PythonからSparkを利用するための機能、PySparkを使いこなすテクニックとノウハウを習得する書籍です。はじめに高速になったSpark 2.0の特徴とアーキテクチャを解説し、次に構造化及び非構造化データの読み取り、PySparkで利用できる基本的なデータ型、MLlibとMLパッケージによる機械学習モデルの構築を説明します。さらにGraphFramesを使ったグラフの操作、ストリーミングデータの読み取り、クラウドへのモデルのデプロイなどの方法を豊富なサンプルと一緒に学びます。またローカルでのSpark+Python+Jupyter環境の構築方法も紹介。大規模なデータを処理し、活用したいエンジニア必携の一冊です。

目次

序文
訳者まえがき
はじめに

1章 Sparkを理解する
    1.1 Apache Sparkとは
    1.2 SparkのジョブとAPI
        1.2.1 実行のプロセス
        1.2.2 耐障害性分散データセット(RDD)
        1.2.3 DataFrame
        1.2.4 Dataset
        1.2.5 Catalyst Optimizer
        1.2.6 Project Tungsten
    1.3 Spark 2.0のアーキテクチャ
        1.3.1 DatasetとDataFrameの統合
        1.3.2 SparkSession
        1.3.3 Tungstenフェーズ2
        1.3.4 Structured Streaming
        1.3.5 継続的アプリケーション
    1.4 まとめ

2章 耐障害性分散データセット
    2.1 RDDの内部動作
    2.2 RDDの生成
        2.2.1 スキーマ
        2.2.2 ファイルからの読み込み
        2.2.3 ラムダ式
    2.3 グローバルとローカルのスコープ
    2.4 変換
        2.4.1 .map(...)変換
        2.4.2 .filter(...)変換
        2.4.3 .flatMap(...)変換
        2.4.4 .distinct(...)変換
        2.4.5 .sample(...)変換
        2.4.6 .leftOuterJoin(...)変換
        2.4.7 .repartition(...)変換
    2.5 アクション
        2.5.1 .take(...)メソッド
        2.5.2 .collect(...)メソッド
        2.5.3 .reduce(...)メソッド
        2.5.4 .count(...)メソッド
        2.5.5 .saveAsTextFile(...)メソッド
        2.5.6 .foreach(...)メソッド
    2.6 まとめ

3章 DataFrame
    3.1 PythonからRDDへの通信
    3.2 Catalystオプティマイザ再び
    3.3 DataFrameによるPySparkの高速化
    3.4 DataFrameの生成
        3.4.1 JSONデータの生成
        3.4.2 DataFrameの生成
        3.4.3 一時テーブルの生成
    3.5 シンプルなDataFrameのクエリ
        3.5.1 DataFrame APIでのクエリ
        3.5.2 SQLでのクエリ
    3.6 RDDとのやりとり
        3.6.1 リフレクションによるスキーマの推定
        3.6.2 プログラムからのスキーマの指定
    3.7 DataFrame APIでのクエリの実行
        3.7.1 行数
        3.7.2 フィルタ文の実行
    3.8 SQLでのクエリ
        3.8.1 行数
        3.8.2 where節でのフィルタの実行
    3.9 DataFrameのシナリオ ―定刻フライトのパフォーマンス
        3.9.1 ソースデータセットの準備
        3.9.2 フライトパフォーマンスと空港の結合
        3.9.3 フライトパフォーマンスデータの可視化
    3.10 Spark Dataset API
    3.11 まとめ

4章 データのモデリングの準備
    4.1 重複、計測値の欠落、外れ値のチェック
        4.1.1 重複
        4.1.2 計測値の欠落
        4.1.3 外れ値
    4.2 データに馴染む
        4.2.1 記述統計
        4.2.2 相関
    4.3 可視化
        4.3.1 ヒストグラム
        4.3.2 特徴間の関係
    4.4 まとめ

5章 MLlib
    5.1 MLlibパッケージの概要
    5.2 データのロードと変換
    5.3 データを知る
        5.3.1 記述統計
        5.3.2 相関
        5.3.3 統計的検定
    5.4 最終のデータセットの生成
        5.4.1 LabeledPointsのRDDの生成
        5.4.2 トレーニングおよびテストデータの切り出し
    5.5 幼児の生存率の予測
        5.5.1 MLlibでのロジスティック回帰
        5.5.2 最も予測可能な特徴のみを選択する
        5.5.3 MLlibでのランダムフォレスト
    5.6 まとめ

6章 MLパッケージ
    6.1 MLパッケージの概要
        6.1.1 Transformer
        6.1.2 Estimator
        6.1.3 パイプライン
    6.2 MLによる乳幼児の生存確率の予測
        6.2.1 データのロード
        6.2.2 transformerの生成
        6.2.3 estimatorの生成
        6.2.4 パイプラインの生成
        6.2.5 モデルのフィッティング
        6.2.6 モデルのパフォーマンス評価
        6.2.7 モデルのセーブ
    6.3 パラメータのハイパーチューニング
        6.3.1 グリッドサーチ
        6.3.2 トレーニングおよび検証データの切り分け
    6.4 PySpark MLのその他の特徴
        6.4.1 特徴抽出
        6.4.2 クラシフィケーション
        6.4.3 クラスタリング
        6.4.4 回帰
    6.5 まとめ

7章 GraphFrames
    7.1 GraphFramesの紹介
    7.2 GraphFramesのインストール
        7.2.1 ライブラリの作成
    7.3 flightsデータセットの準備
    7.4 グラフの構築
    7.5 シンプルなクエリの実行
        7.5.1 空港とフライト数の計算
        7.5.2 データセット中での最大のディレイを求める
        7.5.3 遅延したフライトおよびオンタイム/繰り上げフライト数の計算
        7.5.4 シアトル発で最も大きくディレイしそうなフライトは?
        7.5.5 シアトル発で最も大きくディレイしそうなフライト先の州は?
    7.6 頂点の次数
    7.7 最も経由が多い空港の計算
    7.8 モチーフ
    7.9 PageRankによる空港ランキングの計算
    7.10 最も人気のあるノンストップフライトの計算
    7.11 幅優先検索の利用
    7.12 D3によるフライトの可視化
    7.13 まとめ

8章 TensorFrames
    8.1 ディープラーニングとは何か
        8.1.1 ニューラルネットワークとディープラーニングの必要性
        8.1.2 特徴エンジニアリングとは何か?
        8.1.3 データとアルゴリズムの架け橋
    8.2 TensorFlowとは何か
        8.2.1 pipのインストール
        8.2.2 TensorFlowのインストール
        8.2.3 定数による行列の乗算
        8.2.4 プレースホルダを使った行列の乗算
        8.2.5 議論
    8.3 TensorFrames
    8.4 TensorFramesのクイックスタート
        8.4.1 設定とセットアップ
        8.4.2 TensorFlowによる既存の列への定数の追加
        8.4.3 ブロック単位のreduce処理の例
        8.4.4 ベクトルからなるDataFrameの構築
        8.4.5 DataFrameの分析
        8.4.6 全ベクトルの要素別の合計値および最小値の計算
    8.5 まとめ

9章 Blazeによるポリグロットパーシステンス
    9.1 Blazeのインストール
    9.2 ポリグロットパーシステンス
    9.3 データの抽象化
        9.3.1 NumPy配列の利用
        9.3.2 pandasのDataFrameの利用
        9.3.3 ファイルの利用
        9.3.4 データベースの利用
    9.4 データの処理
        9.4.1 列へのアクセス
        9.4.2 シンボリック変換
        9.4.3 列の操作
        9.4.4 データの集計
        9.4.5 結合
    9.5 まとめ

10章 Structured Streaming
    10.1 Spark Streamingとは何か?
    10.2 Spark Streamingの必要性
    10.3 Spark Streamingアプリケーションのデータフロー
    10.4 DStreamを使ったシンプルなストリーミングアプリケーション
    10.5 グローバル集計の簡単な例
    10.6 Structured Streaming
    10.7 まとめ

11章 Sparkアプリケーションのパッケージ化
    11.1 spark-submitコマンド
        11.1.1 コマンドラインパラメータ
    11.2 プログラムによるアプリケーションのデプロイ
        11.2.1 SparkSessionの設定
        11.2.2 SparkSessionの生成
        11.2.3 コードのモジュール化
        11.2.4 ジョブの投入
        11.2.5 実行のモニタリング
    11.3 Databricksのジョブ
    11.4 まとめ

付録A Apache Sparkのインストール
    A.1 動作要件
    A.2 JavaとPythonがインストールされていることの確認
    A.3 Javaのインストール
    A.4 Pythonのインストール
    A.5 PATHの確認と更新
    A.6 LinuxおよびMacでのPATHの変更
    A.7 WindowsでのPATHの変更
    A.8 Sparkのインストール
    A.9 MacおよびLinux
        A.9.1 ソースコードのダウンロードと展開
        A.9.2 パッケージのインストール
        A.9.3 Mavenのインストール
        A.9.4 sbtでのインストール
        A.9.5 インストールの確認
        A.9.6 環境の移動
        A.9.7 最初の実行
    A.10 Windows
        A.10.1 アーカイブのダウンロードと展開
    A.11 PySparkでのJupyter
        A.11.1 Jupyterのインストール
        A.11.2 環境のセットアップ
        A.11.3 MacおよびLinuxの場合
        A.11.4 Windows
        A.11.5 Jupyterの起動
        A.11.6 PySparkでのHelloWorld
    A.12 クラウドへのインストール
    A.13 まとめ

付録B 無料で利用できるクラウド上のSpark
    B.1 Databricks Community Edition
        B.1.1 ノートブックとダッシュボード
        B.1.2 接続
        B.1.3 ジョブとワークフロー
        B.1.4 クラスタの管理
        B.1.5 エンタープライズセキュリティ
        B.1.6 Databricksの無料サービス
        B.1.7 サービスへのサインアップ
        B.1.8 Databricksの統合ワークスペースでの作業
        B.1.9 DatabricksガイドのGetting Started with Apache Spark
        B.1.10 次のステップ
    B.2 Microsoft Azure HDInsightの利用
        B.2.1 Azure HDInsightの無料サービス
        B.2.2 サービスへのサインアップ
        B.2.3 Microsoft Azureポータル
        B.2.4 Azure HDInsight Sparkクラスタのセットアップ
        B.2.5 Sparkのコードの実行
        B.2.6 データの管理
        B.2.7 セッションの設定
        B.2.8 コードの実行
        B.2.9 Yarnでのジョブの実行モニタリング
    B.3 まとめ

参考文献
索引