
今回の講座では、実際の業務で頻繁に利用される用語やデータの操作を一つの講座にまとめた講座です。
Spark(PySpark)の普段使いであれば十分この講座の内容の操作を知ることで業務に活用可能です。
今回のコースで利用するソースコードは全てGithub上に配置しています。
外部リソースのリンク先よりクローンしてご利用ください。
業務で使われる際の流れを学びたい方は
「データサイエンスのための前処理入門PythonとSparkで学ぶビッグデータエンジニアリング(PySpark) 速習講座」
「【PythonとSparkで始めるデータマネジメント入門】 ビッグデータレイクのための統合メタデータ管理入門」
「【データサイエンスのためのストリーミング前処理入門 PythonとSparkで始めるビッグデータストリーミング処理入門」
を受講いただくと、このコースの内容をさらに理解を深めることが可能だと思います。
本コースの概要を説明します。
本コースは、普段よく利用されるSparkでのデータ操作や概念を一つにまとめたコースです
今回のコースを担当講師はデータエンジニアリングやデータコンサルを専門として働いています
データエンジニアリングが担当する範囲は非常に広く、普段の業務としてどこに相当する作業を行っているのか整理をつけることで理解への助けとします。
環境構築を行います。
外部リソースにリンクされたGitHubより構築をお願いいたします。
1. 分散処理とは
2. PySparkとは
3. ノートブックとは
4. Spark(PySpark)がデータ操作で利用するもの
5. JSONのデータ読み込み
6. CSVのデータ読み込み
7. データフレームを操作する
8. カラムナーフォーマット
9. 圧縮形式とファイルフォーマット
10. 行指向フォーマット
11. パーティションとダイナミックパーティション
12. スモールファイルとデータスキュー
PySparkは分散処理用のフレームワークです。
分散処理はなんでしょうか?
Sparkおよび、Pysparkについて紹介を行います。
ビッグデータ界隈の開発で欠かせないノートブックについて説明を行います。
今回はVsCodeに付属されたノートブック機能を利用します。
SparkはSQLやデータフレーム、RDDを使ってデータを操作していきます。
それぞれの操作方法について紹介していきます。
特にSparkで実行するSQLをSparkSQLと呼びます。
CSV/JSONの読み込みをやってみます
Jsonデータの読み込みをやってみます。
Jsonの形式であれば、入れ子になったデータも簡単に操作することが可能です
CSVのデータ読み込みを行なっています。
CSVは最も読み込みのオプションが多いため、いくつかのパターンに沿ってそ紹介しています。
またCSVを扱うときの注意点について紹介します。
データフレームの操作についてみていきます。
データフレームに対する操作はたくさんあるのですが、今回はよく使う
- withColumns
- When
- null関係の操作(fillna)
カラムナーフォーマットは分析に適したフォーマットです。
カラムナーフォーマットの特徴について紹介します。
行指向フォーマットはデータ追加に適したフォーマットです。
また、ファイルフォーマットとの圧縮形式との組み合わせを見ていきましょう。
圧縮形式として有名なのはgzやbz2です。
しかしビッグデータの世界では上記以外にも圧縮形式が登場します。
同時に、圧縮形式とファイルフォーマットの組み合わせはデータ基盤の成功を決める重要な様相にな理ますので
その最適な組み合わせを紹介します。
ダイナミックパーティションとは、データの中身をもとにパーティションを作成することです。
ダイナミックパーティションを利用する時の注意点についても紹介を行います。
SQLでの出力
DataFrameでの出力
この2つので方法を確認してみます
また、ParquetとAvro形式でのファイルの出力を実際にパーティションあり、パーティションなしで出力をしてみます
ビッグデータの処理で大きな問題となる、スモールデータシステムとデータスキューネスについて紹介を行っていきます
スモールとはその名の通り小さい
スキューとは偏りです
どの様な問題や解決方法があるのでしょうか?
1. ビッグデータ世界のDDL
2. テンポラリテーブル
3. ビッグデータ世界のSQLとは?
4. 単純SQLを振り返ってみよう
5. 分析関数を練習してみよう
6. LAG/Lead関数
7. ピボットテーブル
8. SparkのRDDを使って1レコードつづ処理してみよう
ビッグデータ世界のDDLはどの様なものがあるのでしょうか?
Create table
View
CTAS
SELECT INSERT
ADD PARTITION
テンポラリテーブル
ビッグデータ分析で利用される
SELECT(JOIN)
INSERT
について紹介します。
またINSERTを使う場合の注意点について紹介します。
INSERT/UPDATE/DELETE文はある?
また、ビッグデータの世界で利用されるSQLはリレーショナルデータベースなどで利用されるSQLとどの様に違うのでしょうか?
CTAS
SELECT
SELECT INSERT
についても見ていきましょう
Spark特有のカウントや合計値の取得など基本的関数を紹介しつつ
分析関数の代表格としてウィンドウ関数を紹介します。
このレクチャーでは、Window関数の基本を学んでみましょう。
区画を作る、区画をoverに入れる
これがポイントです。
LAG関数はひとつ前のデータを取得する関数です。
Lead関数はひとつ先のデータを取得する関数です。
ピボットテーブルとは、Excelなどのスプレッドシートにも搭載された縦持ちを横持ちに変換することです。
データを集計するためによく使われる方式です
Sparkが提供しているRDDを使ってデータを処理してみましょう。
1. データラングリングとは?
2. テーブル形式を含むExcelのラングリング
3. テーブル形式を含まないExcelのラングリング
4. PDFのラングリングを行ってみよう
5. ラングリングで気をつけること
ラングリングとはデータをこねくり回すということです、ビッグデータの世界のラングリングは思っているよ以上に地味でかっこいい方法がないのが現実です。
心して地味さを受け入れましょう。
また、ラングリングした後のデータの使い道についても紹介を行います。
テーブル形式を含まないExcelで操作したらどうなるのでしょうか?
実際にPDFのラングリングを行なってみましょう!
PDFのデータラングリングは確かに可能です。
しかしPDFのラングリングは非常に難易度が高ため注意が必要です。
データエンジニアとしてPDFのラングリングを行うことが必要になった場合の心構えを紹介します。
他のコースの紹介です
現役のデータエンジニアがレクチャーします!
AIや機械学習を行う際に最も時間のかかる作業は、データの準備とそれらの管理です。これらの作業のことをデータエンジニアリングと呼びます。実に80%以上の時間をデータエンジニアリング(データサイエンスのための前処理など)に割いてるのが現状です。
本コースではApache Sparkを使ったデータエンジニアリングについて学びます。
ポイント:
本コースでは分散処理のデファクトとなりつつあるSparkについて学びます。
Apache Sparkはビッグデータ処理で多く使われている分散処理エンジンです。
今回はPythonと組み合わせた実際の現場で使われるPySparkを使った操作を一挙にまとめました。
特徴:
データエンジニアリングよりの講座です。
難しいいサイエンスや数学は出てきませんが、データの3職種のうちの一つである「データエンジニア」のためのコースです。
普段Pythonを使っている方やこれからAIやビッグデータの分野にエンジニアとして参画してデータを自在に操りたいという方にはぴったりです
ソースコードや解説は以下のGitHubリポジトリにあります。
動画内ではGitHubの資料に加え補足をしながら解説を進めています。