
講座について簡単に説明します
本コースで利用するリポジトリは、リソースからクローンしてお使いください。
ストリーミングシステムとしての基本を学ぶためにはメッセージキューとそれを利用するプログラミング言語が必要です。
今回はそれぞれKafka(メッセージキュー)とPyspark(プログラミング)を組み合わせながら講座を進めていきます。
基本的な内容理解や技術要素を説明したのちにより実世界での運用のイメージをつけるためにWeb画面でのユーザのトラッキングをKafkaとPysparkを組み合わせて行ってみます。
また、ストリーミングシステムで頻繁に利用されるAvroについても紹介し実践形式で講座を行なっていきます。
今回のコースを担当講師はデータエンジニアリングやデータコンサルを専門として働いています
今回のレクチャーが、データ基盤におけるどこに当たるものなのかを、ビッグデータの全体像から説明します。
環境構築を行います。
外部のGitHub上に構築の手順やDockerの内容がまとまっていますので、そちらを参照しながら進めます。
PySpakrについて理解を深めたい方は、別コース
「データサイエンスのための前処理入門PythonとSparkで学ぶビッグデータエンジニアリング(PySpark) 速習講座」
にて、無料プレビューにてご覧いただけます。
1. メッセージキューとエコシステム
2. セクション2で構築した環境の説明
3. クラウド on メッセージキュー
4. メッセージキューがあると嬉しいこと
メッセージキュー(kafka)の説明と実世界で利用されれる利用方法について学びます。
環境構築したコンポーネントの説明を行います。
クラウドサービスで利用されるメッセージキューについて確認しておきましょう。
名前は違えどほとんどKafkaと目指す機能は同じです。
なぜメッセージキューなるものが必要なのでしょうか?
メッセージが必要な理由について学びます
1. Spark Structured Streamingとは?
2. メッセージキューとの組み合わせは?
3. 他のストリーミングツール
SparkでストリーミングというとStructured Streamingのことを指します。
本講座では単にSpark Streamingと呼びます
Spark Streamingはデータを読み出すコンシューマーになることもできますし、データを書き出すプロデューサーになることも可能です
ベースとしてSparkストリーミングを知っていると他のツールへの転用がしやすいです。
1. コンポーネントの起動
2. データの送信と確認
3. データの送信と確認(コンソール)
4. データの送信と確認(ファイル)
4. データの送信と確認(メッセージ)
4. データの送信と確認(メモリ)
各種コンポーネントについて少し確認しておきましょう。
また、本セクション以降で利用する環境の設定を行います。
データの送信方法は何種類か存在します。
どのような場面でも対応できるように本コースでは以下の3つを対象とします。
Web画面から読み出すパターンはのちのセクションにて別途抜き出して解説します。
- コマンドライン
- プログラムからデータを送信する
- Web画面から送信する
またデータの確認方法としてシンクを紹介します
- コンソールシンク
- メモリシンク
- メッセージシンク
- ファイルシンク
を紹介します。
kafkaに対してデータを送信した後、Spark Streamingでデータを読み出しコンソールに出力しみてます。
以下の流れを学びます。
cmd -> kafka <- spark streaming(df) -> console
kafkaに対してデータを送信した後、Spark StreamingでデータをファイルをParquet方式で出力してみましょう
以下の流れについて学びます
cmd -> kafka <- spark streaming(df) -> parquet(ファイル)
kafkaに対してデータを送信した後、Spark Streamingでデータを整形し再度別のトピックへtsvとjson形式でそれぞれパブリッシュしてみましょう
以下の流れについて学びます。
cmd -> kafka(pyspark-topic1) <- spark streaming(df) -> kafka(pyspark-topic2) <- spark streaming(df2)(データの確認のため) -> console
メモリシンクとはその名の通りデータをメモリ内に保持することです 。
以下の流れについて学びます。
cmd -> kafka(pyspark-topic1) <- spark streaming(df) -> メモリ
なぜ、このようにたくさんのシンクがあるのでしょうか?
その理由を学びます。
1. Avroフォーマット
2. 前方互換と後方互換と完全互換
3. メッセージキューとAvroを連携してみよう
4. Avroファイルの読み書き
5. Avroで前方互換をやってみよう
ストリーミング処理にて頻繁に利用されるAvroフォーマットについての概要を学びます
Avroフォーマットの特徴である互換性について紹介します
メッセージキューとAvroを連携させてみましょう
今回はPythonプログラムからデータを送信してみます。
せっかくなので出力したAvroファイルをSparkで読み込んでみましょう。
これでバッチ処理も可能になります
Avroの特徴の一つである後方互換をやってみましょう。
1. IoT/Kafka/Spark Streamingの組み合わせ概要説明
2. Web画面からのデータ送信
3. ウィンドウ処理
4. DIKWモデル
5. UUIDの付与処理とイベント時間の付与
今回のストリーミング処理で利用する組み合わせについて紹介します。
Web画面からデータを送信して、その結果を見てみましょう
ストリーミングでしばし利用されるウィンドウ処理について学びます。
再度Web画面からデータを送信して、時間ごとの件数を算出してみます。
DIKWモデルについて紹介します
UUIDの付与とイベント時間の付与について紹介します。
なぜこれらの値が付与されるのでしょうか?
ボーナスレクチャーの紹介
現役のデータエンジニアがレクチャーします!
AIや機械学習を行う際に最も時間のかかる作業は、データの準備とそれらの管理です。これらの作業のことをデータエンジニアリングと呼びます。実に80%以上の時間をデータエンジニアリング(データサイエンスのための前処理や仕組み構築)に割いてるのが現状です。
本コースではApache Sparkを使ったストリーミングのデータエンジニアリングについて学びます。
ポイント:
本コースでは分散処理のデファクトとなりつつあるSparkについて学びます。
Apache Sparkはビッグデータ処理で多く使われている分散処理エンジンです。
今回はPythonと組み合わせたPySparkを使ったストリーミング処理の講座です。
ストリーミング処理の基本から、Avroフォーマット、Webアプリケーションにおけるユーザのトラッキングとストリーミングの一連の流れをこのコース一つで学ぶことが可能です。
特徴:
データエンジニアリングよりの講座です。
難しいいサイエンスや数学は出てきませんが、データの3職種のうちの一つである「データエンジニア」のためのコースです。
普段Pythonを使っている方やこれからAIやビッグデータの分野にエンジニアとして参画してデータを自在に操りたいという方にはぴったりです
ストリーミング処理を勉強してみたい方(メッセージキュー、ストリーミングについて学びたい方)
ソースコードや解説は以下のGitHubリポジトリにあります。
動画内ではGitHubの資料に加え補足をしながら解説を進めています。