
講座タイトルの紹介です。
ここでは、以下について解説します
はじめに
本コースの概要と受講することで得られるもの
本コースの特徴
本コースに適する人
本コースに適さない人
コース担当者の自己紹介
ビッグデータの世界を俯瞰してみよう
コレクティングレイヤ
プロセシングレイヤ
ストレージレイヤ
アクセスレイヤ
を簡単に学んだあと、
本コースがどこのレイヤのどの部分のコースであるのか?
を紹介します。
今回のコースを担当講師はデータエンジニアリングやデータコンサルを専門として働いています
本セクションの目次を紹介します。
Sparkとは?
分散処理とは?
PySparkとは?
Pyspark インストール
Pysparkを簡単に動かしてみよう
Spark(PySpark)とはなにか?
分散コンピューティングエンジンである、Sparkについて学びます
Sparkの持っている機能である分散処理について学べます。
スレッド処理とは異なる分散処理を理解します。
Pythonに分散処理の力を与えることができる能力を与えるとPySparkへ進化します。
GitHub上のDocker環境を使って環境構築を行います。
本セクションの目次です。
1. Spark Sessionとは?
2. Sparkを用いたバッチにおけるエンジニアリングの流れ(データソース、変換、カラムナーフォーマット、テーブル作成)?
3. データソースの読み込み
4. データ変換
5. DIKWモデル
6. カラムナーフォーマットへの変換
7. スモールファイル問題
8. 参照用のテーブル作成
Sparkを操作する時に必要なセッションを作成します。
セッションはJavaで言うところのインスタンスを作成するといったイメージです。
Sparkを用いたデータエンジニアリングについての流れを紹介します。
データソースの読み込み(今回は、人口統計データ(/dataset/jinkou.csv)) ETL(Extract Transform Load)で言うEの部分
変換を行う(集計等を行う) DataFrame処理 or SQL処理の2パターンで実行可能 ETL(Extract Transform Load)で言うTの部分
カラムナーフォーマットへ変換する ETL(Extract Transform Load)で言うTの部分
出力したデータをみんなに見やすくするため(BIツールから参照できるように)テーブルを作成する ETL(Extract Transform Load)で言うLの部分
PySparkによる変換するデータの読み込みを行います。
データソースとはなにか?
データエンジニアリングの本質であるデータ変換をPySparkを使って行います。
データの変換について、DIKWモデルを使って整理してみましょう。
DIKWモデルでは、データのステージを「Data」「Infromation」「Knowledge」「Wisdom」として定義しています。
- Data(データ)
- Information(情報)
- Knowledge(知識)
- Wisdom(知恵)
PySparkを使って
ビッグデータの世界で頻繁に疲れているApache Parquet(カラムナーフォーマット)へ変換を行います
PySparkを使って
ビッグデータの世界で問題を起こす、スモールファイル問題の対処方法について紹介します。
PySparkを使ったカラムナーフォーマットのデータ読み込みも出てきます。
データを参照しやすくするように出力したデータをテーブル定義として参照できるようにします。
Sparkしか使えないのでは、エンジニア向けでちょっと使い勝手が悪いのとBIツールといった他のツールから参照することができません
1. 前のセクションの振り返りとSparkSQLの紹介
2. SparkSQLを用いてデータエンジニアリング一連の流れを再現
3. テーブル定義はどこに保存されている?
4. SparkSQLの他のTips(Insert文)
5. SparkSQLの他のTips(Hint文)
6. Update/Delete文?
7. SparkSQLを使うメリット、Dataframeを使うメリット
DataFrameが苦手な方のために、SparkSQLを用いたデータの操作方法について学びます。
Mysqlやスモールデータシステム(Webシステム)の知識がある人は、馴染みがある方法かもしれません
セッション3で行った内容をSparkSQLに書き換えて実行していきます。
データソースの読み込み
データ変換
カラムナ‐フォーマット変換
テーブルの作成
テーブル定義は種類によって2つのパターンが存在しています。
1. テンポラリーテーブル(メモリ)
2. Create External TABLE(メタデータストア)
SQLでデータ登録を行うInsert分について紹介します。
セッション3で紹介したスモールファイル問題の対処方法について紹介していきます。
SparkSQLではhint文を使って対応します。
hint文を使う事によって、ファイル数を制御することが可能です。
SparkSQLにではUpdate文が使えるのでしょうか?
SparkSQLを使うメリットとDataFrameを使うメリットについて紹介します。
本セクションでは、以下を解説します。
1. 本番で動かすことを前提とした、これまでと本レクチャーの違い
2. Pysparkを本番環境で動かす際の流れ
3. Spark Submitを動かす(Sparkをコマンドラインで実行する方法)
4. チューニングのコツ
1. Spark Webインタフェースを用いたボトルネックの調査
2. メモリへの登録
本セクションと前までのセクションの違い
本レクチャーで利用する、リソースの説明
PySparkを実際に本番適用する時の方法について紹介します。
Spark-Submitの必要性と方法について学びます
Sparkというと、メモリに気をとられドライバー(Sparkの実行を指示する親玉)のメモリーやエグゼキューター(実行部隊)のメモリについてのチューニング記事がたくさん出てきます。
しかしながら、これらのメモリー設定がどうしても必要になるパターンはまれです。
メモリを弄る前に、Sparkのチューニングで必要になるポイントについて紹介します。
Spark Webインタフェースを使って、ボトルネックの調査を行う手法を紹介します
Pysparkで処理途中のデータをキャッシュする方法を学びます
他のコースの紹介です
現役のデータエンジニアがレクチャーします!
AIや機械学習を行う際に最も時間のかかる作業は、データの準備とそれらの管理です。これらの作業のことをデータエンジニアリングと呼びます。実に80%以上の時間をデータエンジニアリング(データサイエンスのための前処理など)に割いてるのが現状です。
本コースではApache Sparkを使ったデータエンジニアリングについて学びます。
ポイント:
本コースでは分散処理のデファクトとなりつつあるSparkについて学びます。
Apache Sparkはビッグデータ処理で多く使われている分散処理エンジンです。
今回はPythonと組み合わせたPySparkを、馴染みのあるCSVフォーマットを通して学びます。
特徴:
データエンジニアリングよりの講座です。
難しいいサイエンスや数学は出てきませんが、データの3職種のうちの一つである「データエンジニア」のためのコースです。
普段Pythonを使っている方やこれからAIやビッグデータの分野にエンジニアとして参画してデータを自在に操りたいという方にはぴったりです
ソースコードや解説は以下のGitHubリポジトリにあります。
動画内ではGitHubの資料に加え補足をしながら解説を進めています。