このチュートリアルでは、DataWorks の E-MapReduce (EMR) Hive ノードを使用して、未加工のユーザーデータとログデータを最終的なユーザープロファイルデータセットに変換します。このチュートリアルを完了すると、以下のことができるようになります:
3つのレイヤーからなるデータ処理パイプライン (ODS → DWD → DWS → ADS) の設計
IP アドレスから地理的リージョンを導出するためのユーザー定義関数 (UDF) の登録
各処理ノード用の SQL の設定
開発環境でのパイプラインの実行と検証
本番環境へのワークフローのデプロイとバックフィル実行による検証
このチュートリアルでは、料金が発生するライブリソースが作成されます。予期せぬ費用を避けるため、すべてのノードで有効期間を設定するか、チュートリアル完了後にゼロロードノード workshop_start_emr をフリーズ前提条件
開始する前に、以下が完了していることを確認してください:
データ同期。詳細については、「データ同期」をご参照ください。
ステップ 1:データ処理パイプラインの設計
このチュートリアルでは、4つのレイヤーからなるデータアーキテクチャを使用します。各レイヤーには明確な役割があります:
| レイヤー | 役割 |
|---|---|
| ODS (オペレーショナルデータストア) | Object Storage Service (OSS) から同期された未加工の入力データ — 変更なし |
| DWD (データウェアハウス詳細) | ODS から派生した、クレンジングおよび構造化されたデータ |
| DWS (データウェアハウスサマリー) | DWD を他の ODS テーブルと結合して生成されたエンリッチ化されたデータ |
| ADS (アプリケーションデータサービス) | ダウンストリームでの利用に対応した集計済み出力 |
2つの ODS ソーステーブル — ods_user_info_d_emr (基本ユーザー情報) と ods_raw_log_d_emr (ウェブサイトアクセスログ) — は、Object Storage Service (OSS) から同期されます。後続の各レイヤーは、1つの EMR Hive ノードとして実装されます:
| レイヤー | ノード名 | 機能 |
|---|---|---|
| DWD | dwd_log_info_di_emr | ods_raw_log_d_emr からの未加工のログデータをクレンジングします。getregion UDF と正規表現を使用して、各ログレコードを構造化されたフィールドに分割します。 |
| DWS | dws_user_info_all_di_emr | クレンジングされたログデータを ods_user_info_d_emr の基本ユーザー情報と結合し、エンリッチ化されたデータセットを生成します。 |
| ADS | ads_user_info_1d_emr | エンリッチ化されたデータをユーザー ID で集計し、最終的なユーザープロファイルを生成します。 |
パイプライン構造を設定するには:
DataWorks コンソールの ワークスペース ページに移動し、ご利用のワークスペースの DataStudio を開きます。
DATA STUDIO ペインの ワークスペースディレクトリ セクションで、データ同期時に作成した
workshop_emrワークフローを開きます。dwd_log_info_di_emr、dws_user_info_all_di_emr、ads_user_info_1d_emrという名前の3つの EMR Hive ノードを作成します。スケジューリングの依存関係を設定し、
dwd_log_info_di_emrが最初に実行され、次にdws_user_info_all_di_emr、最後にads_user_info_1d_emrが実行されるようにします。
結果として得られる依存関係グラフは次のようになります:
ステップ 2:UDF の登録
dwd_log_info_di_emr ノードは、getregion という名前の UDF を使用して、各 IP アドレスから地理的リージョンを導出します。ノードを設定する前に、必要な JAR ファイルをアップロードし、UDF を登録します。
JAR リソースのアップロード
ip2region-emr.jar をダウンロードします。
DataStudio ページの左側のナビゲーションウィンドウで、
アイコンをクリックしてリソース管理ペインを開きます。[リソース管理] ペインで、[リソースの作成] をクリックします。[リソースの作成] ダイアログボックスで、[タイプ] ドロップダウンリストから [EMR Jar] を選択し、名前を設定して [OK] をクリックします。
EMR JAR リソースの設定タブで、次のパラメーターを設定します:
パラメーター 値 ファイル ソース オンプレミス ファイルコンテンツ [アップロード] をクリックし、ダウンロードした ip2region-emr.jarファイルを選択します。ストレージ パス OSS。ご利用の EMR クラスターに関連付けられている OSS バケットを選択します。 データソース データ同期時にワークスペースに関連付けた計算リソースを選択します。 [リソースグループ] 環境準備時に作成したサーバーレスリソースグループを選択します。 [保存] をクリックし、次に [デプロイ] をクリックして、リソースを開発環境と本番環境の両方にデプロイします。
UDF の登録
[リソース管理] ペインで、作成した EMR JAR リソースを右クリックし、[関数の作成] > [EMR 関数] を選択します。ダイアログボックスで、[名前] を
getregionに設定し、[OK] をクリックします。EMR UDF の設定タブで、次のパラメーターを設定します:
パラメーター 値 機能タイプ OTHER [データソース] データ同期時にワークスペースに関連付けた計算リソースを選択します。 EMR データベース default [リソースグループ] 環境準備時に作成したサーバーレスリソースグループを選択します。 オーナー 必要な権限を持つユーザーを選択します。 クラス名 org.alidata.emr.udf.Ip2Region[リソース] 作成した EMR JAR リソースの名前を選択します。 [保存] をクリックし、次に [デプロイ] をクリックして、UDF を両方の環境にデプロイします。
ステップ 3:EMR Hive ノードの設定
各ノードは、処理パイプラインの1つのレイヤーを実装する SQL スクリプトを実行します。各ノードを個別に設定します。
ステップ 4:パイプラインの実行と検証
開発環境でワークフローを実行し、3つのノードすべてが正しく実行されることを確認します。
ワークフロー設定タブの上部ツールバーで、[実行] をクリックします。[実行時パラメーターの入力] ダイアログボックスで、
${bizdate}の値として20250223を入力し、[OK] をクリックします。入力した値は、この実行のすべてのノードスクリプトで${bizdate}を置き換えます。yyyymmdd形式の任意の日付を使用してください。実行が完了したら、出力を検証します。DataStudio ページの左側のナビゲーションウィンドウで、
アイコンをクリックして DATA STUDIO ペインを開きます。[ワークスペースディレクトリ] セクションで、workディレクトリを右クリックし、[ノードの作成] > [EMR] > [EMR Hive] を選択してクエリノードを作成します。次のクエリを実行し、<data_timestamp>をads_user_info_1d_emrノードのデータタイムスタンプに置き換えます:クエリが行を返した場合、データ処理は完了です。
クエリが行を返さない場合、ワークフロー実行時に入力した
${bizdate}の値が、クエリのdtの値と一致しているか確認してください。実行で使用されたデータタイムスタンプを確認するには、右側のナビゲーションウィンドウで [実行履歴] をクリックし、[アクション] 列の [表示] をクリックします。データタイムスタンプは、実行ログにpartition=[pt=xxx]の形式で表示されます。
データタイムスタンプは、ノードのスケジュールされた実行日より1日早くなります。たとえば、ノードが2025年2月23日に実行される場合、データタイムスタンプは
20250222です。SELECT * FROM ads_user_info_1d_emr WHERE dt=<data_timestamp>;
ステップ 5:ワークフローのデプロイ
ワークフローを本番環境にデプロイし、ノードがスケジュールに従って自動的に実行されるようにします。
スケジューリングパラメーターはワークフローレベルで設定されます。各ノードで個別に設定する必要はありません。
DataStudio ページの左側のナビゲーションウィンドウで、
アイコンをクリックします。DATA STUDIO ペインの [ワークスペースディレクトリ] セクションで、ワークフロー名をクリックして設定タブを開きます。上部ツールバーで、[デプロイ] をクリックします。
[デプロイ] タブで、[本番環境へのデプロイを開始] をクリックし、画面の指示に従います。
ステップ 6:本番環境での検証
デプロイ後、ノードはインスタンスを生成し、翌日から自動的に実行されます。データバックフィルを使用してノードをすぐに実行し、本番環境で正しく動作することを確認します。詳細については、「データバックフィルとデータバックフィルインスタンスの表示 (新バージョン)」をご参照ください。
DataStudio ページの右上隅にある [オペレーションセンター] をクリックします。または、左上隅の
アイコンをクリックし、[すべてのプロダクト] > [データ開発とタスクオペレーション] > [オペレーションセンター] を選択します。左側のナビゲーションウィンドウで、[自動トリガーノード O&M] > [自動トリガーノード] を選択します。ゼロロードノード
workshop_start_emrを見つけ、ノード名をクリックします。有向非巡回グラフ (DAG) ビューで、
workshop_start_emrを右クリックし、[実行] > [現在および下流ノードを遡及的に実行] を選択します。[データバックフィル] パネルで、バックフィルしたいノードを選択し、[データタイムスタンプ] パラメーターを設定して、[送信してリダイレクト] をクリックします。
データバックフィルページの上部にある [更新] をクリックして、すべてのノードが正常に完了したか確認します。
次のステップ
ダッシュボードでのデータの可視化:DataAnalysis を使用してユーザープロファイルデータをチャートで表示し、ビジネスインサイトを抽出します。
データ品質のモニタリング:出力テーブルにモニタリングルールを設定し、ダーティデータが伝播する前に検出して遮断します。
データの管理:Data Map で生成されたテーブルを表示し、データリネージ関係を探索します。
API を使用したデータサービスの提供:DataService Studio で標準化された API を通じて最終的なユーザープロファイルデータを公開します。