リアルタイムデータの処理と分析 (K-4) 2026年
担当教員
TA
実施学期・受入人数・教室
成績評価
課題1:5%、課題2:10%、課題3:10%、課題4:15%、課題5:15%、課題6:45%
全課題の提出するのは必須になります。一つの課題でも未提出場合は、成績はDになります。
実験概要
SNS、センサー、株式、スマートフォンなどのIoTデバイスから、リアルタイムデータと呼ばれる大量のリアルなデータストリームが溢れています。主な目的は、リアルタイム データを処理および分析する方法を学ぶことです:
- リアルタイム処理モデルを理解
- ストリーム処理アーキテクチャ(クライアント・サーバー)を構築
- リアルタイム データを分割するためのスライディング ウィンドウ操作を実装
- ウィンドウ内のデータに対する基本的な集計操作をリアルタイムで実装
- リアルタイムデータの処理結果を可視化
- 代表的なアルゴリズムを理解
講義は段階的に知識を習得できるように行われます。Java、JavaScript、HTML に関する基本的な知識があれば、実験に問題はありません。他の好みのプログラミング言語を使用しても大丈夫です。ただ、サポートは Java、Scala、Python、JavaScript/HTML に限定されます。
実験概要.
主な学習内容
第1回:ガイダンス・基礎学習
第2回:課題1
Java プログラムや他のプログラミング言語を使用してタイムスタンプ データを生成し、stock_data.txtに保存する。レコード数は10,000です。各値はカンマで区切ります。各レコードは異なる行にする。500 ミリ秒ごとに 1 レコードにする。open,high,low,closeは下部のそれぞれの値段です。基本的に、openとcloseはlowより大きい、highより小さいです。株式は、stockA、stockB、...、stockZ からのものです。例えば:
- stock,open,high,low,close,timestamp
- 株F,493.40,550.50,491.20,499.60,12:00:00
- 株Q,342.30,402.90,321.00,338.10,12:00:01
- 株I,464.10,521.40,429.40,445.40,12:00:02
第3-4回:課題2・課題1の締め切りと確認
データストリームのClient/Server アーキテクチャを構築してデータ ストリームをシミュレートします。
Client/Server アーキテクチャ.
- Client/Server ArchitectureをJavaで使って実装:
- Server (Server.java): データストリームのシミュレーション
- Javaプログラムを作成し、stock_data.txtファイルからデータを読み取り、Clientに送る。48 ミリ秒ごとに 1 レコードの送信速度を設定してください。
- Client (Client.java):
- Serverに接続して、データ ストリームにアクセスして受け入れるJava プログラムを作成します。
- 受け取ったデータに新しいtimestamp(システム時間と呼ばれる)を付けて, 5100 ミリ秒ごとに, 株毎のそれぞれopen, high, low, closeの値の中から最大値と最小値を計算してから、consoleにリアルタイムでprint outします。
結果を見せれば、他のプログラミング言語でも大丈夫です。
参考資料
第5-7回:課題3・課題2の締め切りと確認
- 日程:5月13日水3・4限、5月15日金5・6限
- 場所:オンライン or 計算科学研究センター 会議室C
Client側(Client.java)がServer側(Server.java)から受けったデータに以下の演算を実装:
- Sliding Window 演算(Count windowとTime windowの両方)
- Windowにあるデータに基本演算 (平均、最小、最大、Standard deviation: 標準偏差) を使用してスライディング ウィンドウ集計を実装します。具体的にはclose値段を使って、株ごとの平均・最大・Standard deviationを計算して、リアルタイムでconsoleにprint outします。
- 結果を見せれば、他のプログラミング言語でも大丈夫です。
- 参考資料:Sliding window aggregation
第8-10回:課題4・課題3の締め切りと確認
Webアプリ作成: HTML と Javascript を使用して、問題 3 の結果を視覚化します。
- HTMLとJavascriptはあくまでデータを表示する機能のみを有し,aggregation等の計算はで行わないこと.この計算は基本的に課題3までで作成したプログラムを使用すること.
- ブラウザではWindowにあるデータのテーブルと,aggregationの結果のグラフの両方を1つの画面に表示すること.
結果を見せれば、他のプログラミング言語でも大丈夫です。
Webアプリでの視覚化.
実行する方法: WebSocketsを使って、Java と Javascript/HTML は通信できます。例えば、Javaはserverにして、JavaScriptは clientにします。他のやり方でも大丈夫です。
第11-13回: ストリーム処理フレームワーク Apache Flinkの基礎学習・課題4の締め切りと確認・課題5
- 日程:5月27日水3・4限、5月29日金5・6限、6月3日水3・4限、6月5日金5・6限、6月10日水3・4限
- 場所:オンライン or 計算科学研究センター 会議室C
ここまで実装したClient.javaの代わりにApache Flinkで実装します。Apache Flinkで実装するプログラムは課題1-4と同じようにServer.javaと連携また視覚化します。
Webアプリでの視覚化.
第14-27回:課題6
- 日程:6月12日金5・6限、6月17日水3・4限、6月19日金5・6限、6月24日水3・4限、6月26日金5・6限、7月3日金5・6限、7月8日水3・4限、7月10日金5・6限、7月15日水3・4限、7月17日金5・6限、7月22日水3・4限、7月24日金5・6限、7月29日水3・4限
- 場所:オンライン or 計算科学研究センター 会議室C
テーマは自分で決めるか図:課題6の株分析を実装することです。
- 自由:テーマを自分で決める。
これまでに学習した知識を使用して、リアルタイム データを分析します。興味のあるトピックを選択し、処理や分析を求めたアプリケーションの開発をします。公開されたデータセットを探し、データ ストリームをシミュレートするには、必要に応じて新しいタイムスタンプを追加してください。必須条件は以下のすべての言及が含まれます:
- Sliding window(time window)を使います
- Apache Flinkを使用するかどうかは自由です。
- Client/Server Architectureのように実装します。基本的に主に3つのコンポーネントがある:(1)データストリームソース、(2)データストリーム処理・分析システム(全ての計算・分析を行う)、と(3)分析結果をリアルタイムで可視化するWebアプリケーションです。
- 図:課題6の株分析を実装する
- データセットについて
- StockPrice.Java: 株数:3000、値:制限された範囲内(自由に設定)のランダムな値(例えば100ms毎に全ての株値更新)、株ID:1, 2,..., 3000、株名:データセットに参考
- Transaction.Java: 例えば、100ms毎に、6000取引を行う。取引毎に:(株主ID、株ID、買・売数)、株主ID:制限された範囲内(1-5194)のランダム、株ID:制限された範囲内(1-3000)のランダム、買・売数:ランダム。データセットに参考
- 100ms毎に取引と株値段の更新を行います。
- 更新した後にTransaction.javaとStockPrice.javaからそれぞれ取引更新と株値段の更新をStockProcessor.javaに送信します。
- StockProcessor.javaで株IDを使って、取引と株値段を統合します。必要応じて、株主メタデータと株メタデータから情報を取得します。
- 可視化:図のように実装することです。
- 締め切り:
- 1: 6月18日水3・4限
- 2: 6月25日水3・4限
- 3: 7月4日金5・6限
- 4: 7月11日金5・6限
- 5: 7月25日金5・6限
課題6
第28回:成果発表会・最終レポート作成
課題6でアプリケーション開発の成果について発表会を行います。
|