インターンスポットライト:ジェームズ・ローワン

26年2015月XNUMX日 | 執筆者

ジェームズ・ローワンの写真私の名前はジェームズ・ローワンです。MITで数学を学ぶ3年生です。夏休みはedXの分析チームでインターンとして働き、 データパイプライン分析チームは、edXのコースチーム、研究者、そして社内チームが利用できるデータと指標を提供しています。この夏の私の仕事は、マーケティングチームと経営陣向けの社内レポート作成に使用されるHP Verticaデータベースであるデータウェアハウスの改善に集中しました。

データウェアハウスの拡張

私の最初のプロジェクト コースの科目領域に関する情報をデータウェアハウスに追加するという目標がありました。当初のウェアハウススキーマでは、アナリストはコースごとに登録状況や活動状況のメトリクスを照会できましたが、科目領域ごとにコースを集計・比較する方法がありませんでした。ウェアハウスにコースの科目領域情報があれば、例えばマーケティングチームはどの科目領域の認定資格取得率が最も高いかを把握でき、他のアナリストは科目領域ごとの受講パターン(数学コースでは多くの学習者が問題に取り組む傾向があるのに対し、人文科学コースではディスカッションフォーラムの利用が多いなど)を尋ねることができます。

このタスクを実行するには、まず ルイジオープンedXパイプラインが使用するデータ処理フレームワークです。LuigiはSpotifyが開発したオープンソースのPythonデータ処理フレームワークで、データ処理ワークフローをそれぞれ独自の出力を持つ一連のタスクに分割します。これにより、依存関係の処理が簡素化され、中間ステップが失敗した場合でもワークフローを再開できます。このLuigiの特性により、私たちは可能な限りモジュール化されたワークフローを目指すことができます。

コース科目領域のワークフローには 3 つの部分があります。

  1. コー​​ル コースカタログAPIには、サイトで販売されているすべてのコースのリストと、その科目、インストラクター、長さなどの情報が含まれています。
  2. API の出力をタブ区切り値のファイルに解析します。各行には、コース ID、コースの科目領域、および追加情報が含まれます。
  3. このサブジェクト領域のデータを Vertica データベースにロードします。

上記で特定したこのプロセスの3つの異なるフェーズは、Luigiタスクに自然に反映され、最初の2つは比較的簡単に作成できました。3つ目はより興味深いものでした。LuigiにはMySQLデータベースへのロード用のタスクがあらかじめ用意されていますが、Vertica用のロードタスクはあらかじめ用意されていませんでした。そのため、まずはVerticaをバルクロードする汎用的なLuigiタスクを作成する必要がありました。この汎用バルクローダーは、夏の間、他のチームメンバーによって使用されました。パイプラインのこの部分を所有できたことは、私にとって大きな喜びでした。この部分は、社内の分析ウェアハウスをさらに拡張するための将来のワークフローの基盤となるでしょう。

次のグラフは、このプロジェクトのおかげでアナリストが回答できるようになった質問の例を示しています。edx.orgのコースでアクティブな学習者のうち、特定の分野のコースでアクティブな学習者の割合を示しています。2014年秋には、アクティブな学習者の約10%がコンピュータサイエンス、ビジネス、データ分析、人文科学の各コースでアクティブでした。しかし、2015年には、edx.orgのコースでアクティブな学習者のうち、コンピュータサイエンスのコースでアクティブな学習者の割合が大幅に増加しました。2015年6月には、edx.orgのアクティブな学習者のほぼ半数がコンピュータサイエンスのコースでアクティブでした。表示されている他の3つの分野でも、アクティブユーザーの間で人気が高まり、それぞれ20%に上昇しました。

時間の経過とともに科目に積極的に取り組むアクティブラーナーの割合。コンピューターサイエンス、ビジネスとマネジメント、データ分析と統計、人文科学のコースの人気が高まっていることがわかります。

サブジェクトエリアプロジェクトの後、私は製品分析のための実験的な機能に取り組みました。動画の再生から問題の解答、ユーザープロフィールの編集まで、プラットフォームにおけるすべてのユーザーインタラクションが分析のために記録されます。新機能が追加されイベントが発行され始めると、製品チームはその機能がどのくらいの頻度で使用されているか、あるいはデスクトップブラウザでの使用率が不均衡に高い(モバイル互換性に問題があることを示唆している)かどうかを把握したいと考えるかもしれません。分析チームが新機能に関する追跡ログ情報を集約するためのパイプラインワークフローを構築するのを待つのではなく、製品チームやその他のチームがイベントログの予備分析を自ら行えるようにする必要があります。

イベントログを直接クエリする際の難しさは、イベントログが半構造化されており、JSON形式で保存されていることです。イベントの種類によって属性が異なるため、イベント用の単一のテーブルスキーマを作成しようとすると扱いにくくなります。そこで、 Verticaのフレックステーブル そして、ほぼすべてのイベントに共通するフィールド(ユーザー名、タイムスタンプ、ユーザーのデバイスタイプなど)をマテリアライズド列(ファーストクラスSQLテーブル列)で表すテーブルスキーマを選択しました。同時に、ユーザーがイベント固有のフィールド(ユーザーが現在閲覧している動画内のタイムスタンプなど)をクエリできるようにしました。これが今後の製品分析のフレームワークになるかどうかは分かりませんが、ウェアハウスの機能を探る上で役立ちました。

BIデータ処理をパイプラインに統合する

私がこの夏edXで働き始めたとき、私たちは基本的に2つの別々のパイプラインを持っていました。1つはInsightsで使用される講師向けデータ用(Open edXの分析ダッシュボード)と社内のビジネスインテリジェンス(BI)レポート用のパイプラインがあります。外部向けデータ用のパイプラインはLuigiで記述されており、バッチHadoopジョブを使用して結果ストアにデータを入力します。 データAPI一方、内部レポート用のパイプラインでは、Pentaho Data Integrationを使用してLMSと結果ストアからデータを抽出し、変換してウェアハウスにロードしています。BIパイプラインはメインパイプラインの一部の結果に依存していましたが、これらの依存関係をメインパイプラインに伝達できなかったため、チームはJenkinsビルドサーバー上でタスクの実行時間を慎重に調整する必要があり、依存関係の処理にLuigiを使用する本来の目的が達成されませんでした。

既存のアーキテクチャ:内部BIと外部インサイト Open Pipeline:edx/edx-analytics-pipelineリポジトリから。内部分析のデータパスが外部分析のデータパスと完全に分離されている様子を示します。

データ フローの 2 つの分離したパスを持つ古い分析パイプライン アーキテクチャ。

2つのシステムを維持することに伴う技術的負債を軽減するために、私は次のような課題に取り組みました。 PentahoタスクからLuigiタスクへの移行を開始単一のデータ処理フレームワークへの移行による明らかなメリットに加え、この取り組みはデータウェアハウスのさらなる改善への道を開きます。この新しいアーキテクチャでは、ウェアハウスへのすべての書き込みがパイプラインを介して行われるため、新しいデータ処理タスク(上記の私のコースの科目領域のタスクなど)は、Pentahoのデータ読み込みステップに合わせて手動でスケジュールを設定することなく、ウェアハウスへの書き込みが可能になります。統合されたデータ処理ワークフローはデータ検証も容易にします。Luigiタスクを統合パイプラインに追加するだけで、データ検証タスクを処理ステップに組み込むことができます。

レポートフレームワーク v1:環境の統合を開始します。内部分析システムが外部パイプラインにどのように接続されるかを示します。

Pentaho 廃止後の内部分析 (BI) アーキテクチャが完了しました。

 

このプロジェクトでは、パイプラインのテクノロジースタック全体を扱うことができました。MySQL LMSデータベース、イベントトラッキングログ、Apache Hive中間結果ウェアハウス、そして完成したVerticaデータプロダクトウェアハウスと連携するタスクを作成する機会に恵まれ、夏の間に習得してきたスキルを結集させる良い機会となりました。

結論

この夏、edXで働く機会を得て大変嬉しく思っています。このインターンシップでは、Luigiフレームワーク、MapReduceパラダイム、SQL、Gitといった様々な技術スキルを習得することができました。また、アナリティクスチームに所属することで、データ処理アーキテクチャの設計、大規模コードベースの保守、ソフトウェアおよびデータ製品の開発サイクルを直接体験することができました。アジャイルチームで働くことを学ぶことは、幅広い応用が利くスキルであり、仕事以外の環境におけるグループダイナミクスやプロジェクトマネジメントについて、より意識的に考えるようになりました。  

技術的なパイプラインの質問に回答してくれた John Baker、Gabe Mulley、Brian Wilson、素晴らしい作業環境を提供してくれた分析チームの他のメンバー、そしてこの夏を楽しいものにしてくれた edX の全員に感謝します。

ローディング

もっと時間が必要ですか? 以下の記事をご覧ください。

共に問題を解決する:コミュニティ主導のプラットフォーム開発
Open edXカンファレンスで未来を切り拓くスキルとスケールアップ
Open edXカンファレンス開発者向けワークショップ
デジタルの未来を取り戻す:私がオープン・ルネッサンス・グループに参加した理由
Open edX カンファレンス 2026 に参加しましょう!

2026 Open edX カンファレンスでは、世界最高峰のオープンソース オンライン学習管理システムの XNUMX つである Open edX プラットフォームの革新的な使用事例を紹介し、教育設計、コース構成、生成 AI などの画期的なテクノロジーを含む Open edX プラットフォームの運用と拡張の方法における最新の進歩を紹介します。