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

Book description

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

Table of contents

  1. 序文
  2. 訳者まえがき
  3. はじめに (1/3)
  4. はじめに (2/3)
  5. はじめに (3/3)
  6. 1章 Sparkを理解する
    1. 1.1 Apache Sparkとは
    2. 1.2 SparkのジョブとAPI
      1. 1.2.1 実行のプロセス
      2. 1.2.2 耐障害性分散データセット(RDD)
      3. 1.2.3 DataFrame
      4. 1.2.4 Dataset
      5. 1.2.5 Catalyst Optimizer
      6. 1.2.6 Project Tungsten
    3. 1.3 Spark 2.0のアーキテクチャ
      1. 1.3.1 DatasetとDataFrameの統合
      2. 1.3.2 SparkSession
      3. 1.3.3 Tungstenフェーズ2
      4. 1.3.4 Structured Streaming
      5. 1.3.5 継続的アプリケーション
    4. 1.4 まとめ
  7. 2章 耐障害性分散データセット
    1. 2.1 RDDの内部動作
    2. 2.2 RDDの生成
      1. 2.2.1 スキーマ
      2. 2.2.2 ファイルからの読み込み
      3. 2.2.3 ラムダ式
    3. 2.3 グローバルとローカルのスコープ
    4. 2.4 変換
      1. 2.4.1 .map(...)変換
      2. 2.4.2 .filter(...)変換
      3. 2.4.3 .flatMap(...)変換
      4. 2.4.4 .distinct(...)変換
      5. 2.4.5 .sample(...)変換
      6. 2.4.6 .leftOuterJoin(...)変換
      7. 2.4.7 .repartition(...)変換
    5. 2.5 アクション
      1. 2.5.1 .take(...)メソッド
      2. 2.5.2 .collect(...)メソッド
      3. 2.5.3 .reduce(...)メソッド
      4. 2.5.4 .count(...)メソッド
      5. 2.5.5 .saveAsTextFile(...)メソッド
      6. 2.5.6 .foreach(...)メソッド
    6. 2.6 まとめ
  8. 3章 DataFrame
    1. 3.1 PythonからRDDへの通信
    2. 3.2 Catalystオプティマイザ再び
    3. 3.3 DataFrameによるPySparkの高速化
    4. 3.4 DataFrameの生成
      1. 3.4.1 JSONデータの生成
      2. 3.4.2 DataFrameの生成
      3. 3.4.3 一時テーブルの生成
    5. 3.5 シンプルなDataFrameのクエリ
      1. 3.5.1 DataFrame APIでのクエリ
      2. 3.5.2 SQLでのクエリ
    6. 3.6 RDDとのやりとり
      1. 3.6.1 リフレクションによるスキーマの推定
      2. 3.6.2 プログラムからのスキーマの指定
    7. 3.7 DataFrame APIでのクエリの実行
      1. 3.7.1 行数
      2. 3.7.2 フィルタ文の実行
    8. 3.8 SQLでのクエリ
      1. 3.8.1 行数
      2. 3.8.2 where節でのフィルタの実行
    9. 3.9 DataFrameのシナリオ─定刻フライトのパフォーマンス
      1. 3.9.1 ソースデータセットの準備
      2. 3.9.2 フライトパフォーマンスと空港の結合
      3. 3.9.3 フライトパフォーマンスデータの可視化
    10. 3.10 Spark Dataset API
    11. 3.11 まとめ
  9. 4章 データのモデリングの準備
    1. 4.1 重複、計測値の欠落、外れ値のチェック
      1. 4.1.1 重複
      2. 4.1.2 計測値の欠落
      3. 4.1.3 外れ値
    2. 4.2 データに馴染む
      1. 4.2.1 記述統計
      2. 4.2.2 相関
    3. 4.3 可視化
      1. 4.3.1 ヒストグラム
      2. 4.3.2 特徴間の関係
    4. 4.4 まとめ
  10. 5章 MLlib
    1. 5.1 MLlibパッケージの概要
    2. 5.2 データのロードと変換
    3. 5.3 データを知る
      1. 5.3.1 記述統計
      2. 5.3.2 相関
      3. 5.3.3 統計的検定
    4. 5.4 最終のデータセットの生成
      1. 5.4.1 LabeledPointsのRDDの生成
      2. 5.4.2 トレーニングおよびテストデータの切り出し
    5. 5.5 幼児の生存率の予測
      1. 5.5.1 MLlibでのロジスティック回帰
      2. 5.5.2 最も予測可能な特徴のみを選択する
      3. 5.5.3 MLlibでのランダムフォレスト
    6. 5.6 まとめ
  11. 6章 MLパッケージ
    1. 6.1 MLパッケージの概要
      1. 6.1.1 Transformer
      2. 6.1.2 Estimator
      3. 6.1.3 パイプライン
    2. 6.2 MLによる乳幼児の生存確率の予測
      1. 6.2.1 データのロード
      2. 6.2.2 transformerの生成
      3. 6.2.3 estimatorの生成
      4. 6.2.4 パイプラインの生成
      5. 6.2.5 モデルのフィッティング
      6. 6.2.6 モデルのパフォーマンス評価
      7. 6.2.7 モデルのセーブ
    3. 6.3 パラメータのハイパーチューニング
      1. 6.3.1 グリッドサーチ
      2. 6.3.2 トレーニングおよび検証データの切り分け
    4. 6.4 PySpark MLのその他の特徴
      1. 6.4.1 特徴抽出
      2. 6.4.2 クラシフィケーション
      3. 6.4.3 クラスタリング
      4. 6.4.4 回帰
    5. 6.5 まとめ
  12. 7章 GraphFrames
    1. 7.1 GraphFramesの紹介
    2. 7.2 GraphFramesのインストール
      1. 7.2.1 ライブラリの作成
    3. 7.3 flightsデータセットの準備
    4. 7.4 グラフの構築
    5. 7.5 シンプルなクエリの実行
      1. 7.5.1 空港とフライト数の計算
      2. 7.5.2 データセット中での最大のディレイを求める
      3. 7.5.3 遅延したフライトおよびオンタイム/繰り上げフライト数の計算
      4. 7.5.4 シアトル発で最も大きくディレイしそうなフライトは?
      5. 7.5.5 シアトル発で最も大きくディレイしそうなフライト先の州は?
    6. 7.6 頂点の次数
    7. 7.7 最も経由が多い空港の計算
    8. 7.8 モチーフ
    9. 7.9 PageRankによる空港ランキングの計算
    10. 7.10 最も人気のあるノンストップフライトの計算
    11. 7.11 幅優先検索の利用
    12. 7.12 D3によるフライトの可視化
    13. 7.13 まとめ
  13. 8章 TensorFrames
    1. 8.1 ディープラーニングとは何か
      1. 8.1.1 ニューラルネットワークとディープラーニングの必要性
      2. 8.1.2 特徴エンジニアリングとは何か?
      3. 8.1.3 データとアルゴリズムの架け橋
    2. 8.2 TensorFlowとは何か
      1. 8.2.1 pipのインストール
      2. 8.2.2 TensorFlowのインストール
      3. 8.2.3 定数による行列の乗算
      4. 8.2.4 プレースホルダを使った行列の乗算
      5. 8.2.5 議論
    3. 8.3 TensorFrames
    4. 8.4 TensorFramesのクイックスタート
      1. 8.4.1 設定とセットアップ
      2. 8.4.2 TensorFlowによる既存の列への定数の追加
      3. 8.4.3 ブロック単位のreduce処理の例
      4. 8.4.4 ベクトルからなるDataFrameの構築
      5. 8.4.5 DataFrameの分析
      6. 8.4.6 全ベクトルの要素別の合計値および最小値の計算
    5. 8.5 まとめ
  14. 9章 Blazeによるポリグロットパーシステンス
    1. 9.1 Blazeのインストール
    2. 9.2 ポリグロットパーシステンス
    3. 9.3 データの抽象化
      1. 9.3.1 NumPy配列の利用
      2. 9.3.2 pandasのDataFrameの利用
      3. 9.3.3 ファイルの利用
      4. 9.3.4 データベースの利用
    4. 9.4 データの処理
      1. 9.4.1 列へのアクセス
      2. 9.4.2 シンボリック変換
      3. 9.4.3 列の操作
      4. 9.4.4 データの集計
      5. 9.4.5 結合
    5. 9.5 まとめ
  15. 10章 Structured Streaming
    1. 10.1 Spark Streamingとは何か?
    2. 10.2 Spark Streamingの必要性
    3. 10.3 Spark Streamingアプリケーションのデータフロー
    4. 10.4 DStreamを使ったシンプルなストリーミングアプリケーション
    5. 10.5 グローバル集計の簡単な例
    6. 10.6 Structured Streaming
    7. 10.7 まとめ
  16. 11章 Sparkアプリケーションのパッケージ化
    1. 11.1 spark-submitコマンド
      1. 11.1.1 コマンドラインパラメータ
    2. 11.2 プログラムによるアプリケーションのデプロイ
      1. 11.2.1 SparkSessionの設定
      2. 11.2.2 SparkSessionの生成
      3. 11.2.3 コードのモジュール化
      4. 11.2.4 ジョブの投入
      5. 11.2.5 実行のモニタリング
    3. 11.3 Databricksのジョブ
    4. 11.4 まとめ
  17. 付録A Apache Sparkのインストール
    1. A.1 動作要件
    2. A.2 JavaとPythonがインストールされていることの確認
    3. A.3 Javaのインストール
    4. A.4 Pythonのインストール
    5. A.5 PATHの確認と更新
    6. A.6 LinuxおよびMacでのPATHの変更
    7. A.7 WindowsでのPATHの変更
    8. A.8 Sparkのインストール
    9. A.9 MacおよびLinux
      1. A.9.1 ソースコードのダウンロードと展開
      2. A.9.2 パッケージのインストール
      3. A.9.3 Mavenのインストール
      4. A.9.4 sbtでのインストール
      5. A.9.5 インストールの確認
      6. A.9.6 環境の移動
      7. A.9.7 最初の実行
    10. A.10 Windows
      1. A.10.1 アーカイブのダウンロードと展開
    11. A.11 PySparkでのJupyter
      1. A.11.1 Jupyterのインストール
      2. A.11.2 環境のセットアップ
      3. A.11.3 MacおよびLinuxの場合
      4. A.11.4 Windows
      5. A.11.5 Jupyterの起動
      6. A.11.6 PySparkでのHelloWorld
    12. A.12 クラウドへのインストール
    13. A.13 まとめ
  18. 付録B 無料で利用できるクラウド上のSpark
    1. B.1 Databricks Community Edition
      1. B.1.1 ノートブックとダッシュボード
      2. B.1.2 接続
      3. B.1.3 ジョブとワークフロー
      4. B.1.4 クラスタの管理
      5. B.1.5 エンタープライズセキュリティ
      6. B.1.6 Databricksの無料サービス
      7. B.1.7 サービスへのサインアップ
      8. B.1.8 Databricksの統合ワークスペースでの作業
      9. B.1.9 DatabricksガイドのGetting Started with Apache Spark (1/2)
      10. B.1.9 DatabricksガイドのGetting Started with Apache Spark (2/2)
      11. B.1.10 次のステップ
    2. B.2 Microsoft Azure HDInsightの利用
      1. B.2.1 Azure HDInsightの無料サービス
      2. B.2.2 サービスへのサインアップ
      3. B.2.3 Microsoft Azureポータル
      4. B.2.4 Azure HDInsight Sparkクラスタのセットアップ
      5. B.2.5 Sparkのコードの実行
      6. B.2.6 データの管理
      7. B.2.7 セッションの設定
      8. B.2.8 コードの実行
      9. B.2.9 Yarnでのジョブの実行モニタリング
    3. B.3 まとめ
  19. 参考文献
  20. 索 引 (1/2)
  21. 索 引 (2/2)

Product information

  • Title: 入門 PySpark ―PythonとJupyterで活用するSpark 2エコシステム
  • Author(s): Tomasz Drabas, Denny Lee, Sky株式会社 玉川 竜司
  • Release date: November 2017
  • Publisher(s): O'Reilly Japan, Inc.
  • ISBN: 9784873118185

You might also like

book

Pythonではじめるバイオインフォマティクス ―可読性・拡張性・再現性のあるコードを書くために

by Ken Youens-Clark, 異業種データサイエンス研究会

本書はPythonを使ったバイオインフォマティクス研究のプログラミングスキルを学ぶことができる解説書です。Pythonが再現性のある科学的なプログラムを書くのに適していることに焦点を当て、バイオインフォマティクス分野におけるプログラムの文書化やテスト、再現可能なソフトウェアの開発方法を解説します。2部構成に分かれ、第Ⅰ部ではバイオインフォマティクスとプログラミングを学習するためのプラットフォーム「Rosalind」を使って14の課題に取り組みながら実践的に学習します。第Ⅱ部ではそのほかの重要パターンや概念を取り上げ、より複雑なプログラムについて説明します。ソフトウェアの開発、テスト、文書化、リリース、そしてサポートといった重要な方法を学び、Pythonを使ってバイオインフォマティクス研究を発展させるテクニックを学べる1冊です。

book

直感 Deep Learning ―Python×Kerasでアイデアを形にするレシピ

by Antonio Gulli, Sujit Pal, 大串 正矢, 久保 隆宏, 中山 光樹

直感的かつ短いコードでアイデアを形にできるKerasはTensorFlowのラッパーとして大人気のライブラリです。本書でもTensorFlowをバックエンドとして使用し、自然言語処理、画像識別、画像生成、音声合成、テキスト生成、強化学習、AIゲームプレイなどさまざまなモデルをPythonとKerasで実装します。対象読者は、各種のディープラーニングを素早く実装したいプログラマー、データサイエンティスト。ディープラーニングを支える技術の速習にも好適です。数式はなるべく使わずにコードと図で説明します。ニューラルネットワークおよびPython 3の基本を理解している人であれば誰でも始めることができます。

book

実践 自然言語処理 ―実世界NLPアプリケーション開発のベストプラクティス

by Sowmya Vajjala, Bodhisattwa Majumder, Anuj Gupta, Harshit Surana, 中山 光樹

自然言語処理(Natural Language Processing:NLP)の本格的な実践書。過去10年間で起きたブレークスルーにより、NLPは小売、医療、金融、法律など、さまざまな分野での利用が増えてきました。急速に利用が拡大する中で、産業界でNLPを使ったシステムを構築するのに必要な知識を学べる講座や書籍は不足していました。本書を読むことで、NLPの要素技術やSNS、Eコマース、医療、金融といった具体的なビジネスへの適用方法に加えて、NLPシステムを開発するためのベストプラクティスを詳しく学べます。

book

エンジニアリングマネージャーのしごと ―チームが必要とするマネージャーになる方法

by James Stanier, 吉羽 龍太郎, 永瀬 美穂, 原田 騎郎, 竹葉 美沙

本書は、エンジニアリングチームのマネジメントの仕事全般を紹介し、エンジニアリングマネージャーに必要な考え方やスキルを解説します。はじめに、自分の役割と組織のさまざまな部分がどう関係するかを理解し、習慣を整えることで自分自身を管理することを学びます。そして、日々のマネジメント業務で必要なツールとプロセスを紹介し、スタッフとの関係性の構築、モチベーションの理解、評価や採用などを解説します。さらに社内政治や難しい状況での判断、その後のキャリアについて説明します。 マネジメントのさまざまな段階に沿って、日々の仕事に取り入れられる実践的なアドバイスを紹介する本書は、エンジニアリングチームのマネージャーに必携の一冊です。