リクルートテクノロジーズアドバンスドテクノロジーラボの石川有です.2016年4月29日に技術評論社様より発売される「詳解 Apache Spark」を共著で執筆しました.技術評論社様,レビューをしていただいた皆様に厚く御礼を申し上げます.また日本で Spark のプロフェッショナルな方々にお声掛けして,各コンポーネントに精通した豪華な執筆陣を組めたことに感謝いたします.

技術評論社「詳解Apache Spark」

Apache Spark は分散処理のコア機能以外に,SQL インタフェースや機械学習やストリーミング処理などさまざまなコンポーネントを内包しています.そこで本書では各コンポーネントに精通した著者の分担での執筆と致しました.全体としては,基本機能の解説だけでなく,より実践的な使い方を示すことでより理解が深まるような構成となっています.

私は機械学習ライブラリ MLlib を普段追っかけていますが,本書では5章の「DataFrame と Spark SQL」を担当致しました.ほかの章の売り込みについてはほかの共著者に譲るとして,このエントリーでは5章のみについてご紹介致します.

5章の対象読者

5章では,Spark で構造化データをより簡単に扱うための DataFrame API と Spark SQL を解説します.「9割の分析はクロス集計で十分」とも言われるほど,構造化データの分析は非常に重要です.そこで本章を執筆する上で意識したことは,基本的な機能の解説を豊富にすることはもちろん,より実践的な分析の流れの中で DataFrame API や Spark SQL がどう利用できるのかを学べる構成にしたかったということです.本章を通して読者の方がつぎのようなことが得られたならば,本章の目的は達成できたと言えます.

  1. データ分析を普段やらないエンジニアの方が,Spark を通して基本的なデータ分析を学べる
  2. データ分析者の方が,やりたい分析処理を Spark でどのようにやるかを学べる

5章の構成

本章では,実際に公開されているオープンデータの分析を通して解説を進めます.データの基本操作,読み込みや書き込み,欠損値処理などの基本操作から Apache Hive や JDBC 経由でのデータ取得などの外部システムとの連携方法の解説しています.また Spark 1.6 から実験的に追加された Dataset API の解説も簡単にではありますが盛り込んでいます.その後,解説した基本機能を活用しながらオープンデータの分析を通して,より実践的な分析シーンの中で DataFrame API がどのように活用できるのかを解説します.章の構成は次になります.

  • 5.1 DataFrame API と Spark SQL
  • 5.2 データの準備
  • 5.3 DataFrame API を利用したデータ処理
  • 5.3.6 SQL クエリで DataFrame を操作
  • 5.4 パフォーマンスチューニング
  • 5.5 外部システムとの連携
  • 5.6 Dataset API
  • 5.7 DataFrame API を利用した BAY AREA BikeShare の分析
  • 5.8 まとめ

私個人としては,多くのデータ分析プロダクト系の書籍では機能解説のみで,実践的な分析をどのように行うかの視点が欠けていることが不満でした.本章の1つの特徴として,「5.7 DataFrame API を利用した BAY AREA BikeShare の分析」で実践的な分析の流れをどのような機能で行えるかを記したことです.

本書のサンプルコード

また本書のサンプルコードは,GitHub – yu-iskw/gihyo-spark-book-example: 技術評論社「詳解Apache Spark」のサンプルコードにて公開しています.サンプルコードを読んで,実際に動かしていただくと,より Spark への理解が進むと思います.

最後に

本章のレビューにご協力いただいた @ueshin さんに改めて厚く御礼を申し上げます.私は DataFrame API の Public API 部分での開発にわずかながら関わった経験はありますが,深い部分での理解がなかったので,強力な味方なしに本章をここまでの完成度の高く充実したものにすることはできませんでした.ご協力ありがとうございました.