EMR Serverless Spark では、SQL コードを使用してタスクを編集および実行できます。このトピックでは、SQL タスクの作成、実行、管理の方法について説明します。
前提条件
-
Alibaba Cloud アカウントが作成されていること。詳細については、Alibaba Cloud アカウントの登録をご参照ください。
-
必要なロールが付与されていること。詳細については、「Alibaba Cloud アカウントへのロールの付与」をご参照ください。
-
ワークスペースとセッションインスタンスが作成されていること。詳細については、「ワークスペースの作成」および「SQL セッションの管理」をご参照ください。
ステップ 1:開発タスクの作成と公開
タスクをタスクオーケストレーションで使用するには、先に公開する必要があります。
-
データ開発ページに移動します。
-
EMR コンソールにログインします。
-
左側のナビゲーションウィンドウで、[EMR Serverless] > [Spark] を選択します。
-
[Spark] ページで、対象のワークスペースをクリックします。
-
EMR Serverless Spark ページで、左側のナビゲーションウィンドウにある Development をクリックします。
-
-
users_task という名前のタスクを作成します。
-
Development タブで、
アイコンをクリックします。 -
Create ダイアログボックスで、users_task などの名前を入力し、[タイプ] をデフォルトの [SparkSQL] に設定してから、OK をクリックします。
-
新しい Spark SQL タブ (users_task) に次のコードをコピーします。
CREATE TABLE IF NOT EXISTS students ( name VARCHAR(64), address VARCHAR(64) ) USING PARQUET PARTITIONED BY (data_date STRING) OPTIONS ( 'path'='oss://<bucketname>/path/' ); INSERT OVERWRITE TABLE students PARTITION (data_date = '${ds}') VALUES ('Ashua Hill', '456 Erica Ct, Cupertino'), ('Brian Reed', '723 Kern Ave, Palo Alto');以下の基本的な日付変数がサポートされています。デフォルト値は前日です。
変数
データ型
説明
{data_date}
str
日付情報を示す変数。フォーマットは
YYYY-MM-DDです。例:2023-09-18
{ds}
str
{dt}
str
{data_date_nodash}
str
日付情報を示す変数。フォーマットは
YYYYMMDDです。例:20230918
{ds_nodash}
str
{dt_nodash}
str
{ts}
str
タイムスタンプを示す変数。フォーマットは
YYYY-MM-DDTHH:MM:SSです。例:2023-09-18T16:07:43
{ts_nodash}
str
タイムスタンプを示す変数。フォーマットは
YYYYMMDDHHMMSSです。例:20230918160743
-
データベースのドロップダウンリストからデータベースを選択し、セッションのドロップダウンリストから実行中のセッションインスタンスを選択します。
ドロップダウンリストから Connect to SQL Session を選択して、新しいセッションインスタンスを作成することもできます。セッション管理の詳細については、「SQL セッションの管理」をご参照ください。
-
実行 をクリックしてタスクを実行します。
Execution Results タブに結果が表示されます。エラーが発生した場合は、Execution Issues タブで詳細を確認できます。
-
-
users_task タスクを公開します。
説明タスクに指定されたパラメーターはタスクと共に公開され、タスクが本番環境で実行されるときに使用されます。SQL エディターで実行されるタスクは、セッションのパラメーターを使用します。
-
新しい Spark SQL タブで、Publish をクリックします。
-
ダイアログボックスに公開情報を入力し、OK をクリックします。
-
-
users_count タスクを作成します。
-
Development タブで、
アイコンをクリックします。 -
Create ダイアログボックスで、users_count などの名前を入力し、デフォルトのタイプである SparkSQL を使用して、OK をクリックします。
-
新しい Spark SQL タスクタブ (users_count) に次のコードをコピーします。
SELECT COUNT(1) FROM students; -
データベースのドロップダウンリストからデータベースを選択し、セッションのドロップダウンリストから実行中のセッションインスタンスを選択します。
ドロップダウンリストから Connect to SQL Session を選択して、新しいセッションを作成することもできます。セッション管理の詳細については、「SQL セッションの管理」をご参照ください。
-
実行 をクリックしてタスクを実行します。
結果は Execution Results タブに表示されます。エラーが発生した場合は、Execution Issues タブで詳細を確認できます。
-
-
users_count タスクを公開します。
説明タスクに指定されたパラメーターはタスクと共に公開され、タスクが本番環境で実行されるときに使用されます。SQL エディターで実行されるタスクは、セッションのパラメーターを使用します。
-
新しい Spark SQL タスクタブで、Publish をクリックできます。
-
ダイアログボックスに公開情報を入力し、OK をクリックします。
-
ステップ 2:ワークフローとそのノードの作成
-
左側のナビゲーションウィンドウで、タスクオーケストレーション をクリックします。
-
タスクオーケストレーション ページで、Create Workflow をクリックします。
-
Create Workflow パネルで、Name に spark_workflow_task などの名前を入力し、次へ をクリックします。
必要に応じて、Other Settings セクションでパラメーターを設定できます。パラメーターの詳細については、「ワークフローの管理」をご参照ください。
-
users_task ノードを追加します。
-
新しいノードキャンバスで、Add Node をクリックします。
-
Add Node パネルで、Path ドロップダウンリストから公開済みのタスク users_task を選択し、Save をクリックします。
-
-
users_count ノードを追加します。
-
Add Node をクリックします。
-
Add Node パネルで、Path ドロップダウンリストから公開済みのタスク users_count を選択し、Upstream Nodes ドロップダウンリストから users_task を選択して、Save をクリックします。
-
-
新しいノードキャンバスで、Publish Workflow をクリックします。
キャンバスには、users_task と users_count の 2 つの SQL ノードが表示され、それらを結ぶ矢印が実行の依存関係を示します。
-
Publish ダイアログボックスに公開の詳細を入力し、OK をクリックします。
ステップ 3:ワークフローの実行
-
タスクオーケストレーション ページで、spark_workflow_task など、新しいワークフローの Name をクリックします。
-
Workflow Runs ページで、実行 をクリックします。
説明スケジューリング周期を設定した後、タスクオーケストレーション ページの左側にあるスイッチを使用してスケジューリングをトリガーすることもできます。
-
Run Workflow ダイアログボックスで、OK をクリックします。
ステップ 4:インスタンスステータスの表示
-
タスクオーケストレーション ページで、spark_workflow_task など、対象のワークフローをクリックします。
-
Workflow Runs ページでは、すべてのワークフローインスタンスのリストを、ランタイム、ステータス、その他の詳細とともに表示できます。
ページ上部の縦棒グラフは、日付ごとのワークフロー実行ステータスの分布を示します。下の表には、[ワークフロー実行 ID]、[バージョン]、[実行モード]、[ノード数]、[スケジュール時刻]、[開始時刻]、[終了時刻] などの列が含まれます。
-
インスタンスグラフを表示するには、Workflow Runs セクションで Workflow Run ID をクリックするか、上部にある Workflow Runs Diagram タブをクリックします。
-
ノードインスタンスをクリックします。表示されるノード情報ボックスで、必要に応じて操作を実行したり、情報を表示したりできます。
関連する操作と詳細については、「ノードインスタンスの表示」をご参照ください。
ノード情報ボックスには、タスクの [開始時刻]、[終了時刻]、[ステータス]、[ランタイム] などの実行詳細が表示されます。また、[再実行]、[停止]、[成功に設定] などの操作ボタンも提供されます。
たとえば、Spark UI をクリックして Spark ジョブページを開き、Spark タスクに関するリアルタイム情報を表示します。
Spark ジョブページには、完了したジョブのリストが、[ジョブ ID]、[説明]、[送信済み]、[期間]、[ステージ: 成功/合計]、[タスク: 成功/合計] などの列とともに表示されます。各ジョブの実行ステータスと期間を確認できます。
-
Job Run ID をクリックして Job History ページを開き、メトリクス、診断、ログ情報を表示できます。
[概要] タブの [基本情報] セクションでは、実行ステータス、タスク名、タスク実行 ID、タスクタイプ、データベースエンジンバージョン、Fusion アクセラレーションステータスなどの情報を表示できます。
ステップ 5:ワークフローの O&M
タスクオーケストレーション ページで、ワークフローの名前をクリックして Workflow Runs ページを開きます。以下の操作が可能です:
-
Workflow Information セクションで、パラメーターを編集できます。
-
Workflow Runs セクションでは、すべてのワークフローを表示できます。Workflow Run ID をクリックしてインスタンスグラフを開きます。
ワークフローインスタンスグラフページには、タスクノードの依存関係と実行ステータスが表示されます。この例では、users_task (SQL) が先祖ノードで、users_count (SQL) が子孫ノードです。それらの間のコネクタが依存関係を示します。両方のノードは成功した実行ステータス (緑色のチェックマーク) を示しています。
ステップ 6:データの表示
-
左側のナビゲーションウィンドウで、Development をクリックします。
-
新しい SparkSQL 開発タスクを作成します。次に、次のコマンドを入力して実行し、テーブルの詳細を表示します。
SELECT * FROM students;次の情報が返されます。
結果には、name、address、data_date の 3 つの列が含まれます。Ashua Hill (住所: 456 Erica Ct, Cupertino、日付: 2024-01-01) と Brian Reed (住所: 723 Kern Ave, Palo Alto、日付: 2024-01-01) の 2 つのレコードがあります。
参考
-
リソースキューの作成方法の詳細については、「リソースキューの管理」をご参照ください。
-
SQL セッションの作成方法の詳細については、「SQL セッションの管理」をご参照ください。