EMR Serverless Spark では、SQL コードを使用してジョブを編集および実行できます。このトピックでは、SQL ジョブの作成、開始、および保守の方法について説明します。
前提条件
Alibaba Cloud アカウントを持っていること。詳細については、アカウントにサインアップをご参照ください。
必要なロールが付与されていること。詳細については、「Alibaba Cloud アカウントにロールを付与する」をご参照ください。
ワークスペースとセッションインスタンスが作成されていること。詳細については、「ワークスペースの作成」および「SQL セッションの管理」をご参照ください。
ステップ 1: 開発ジョブの作成と公開
ジョブをワークフローで使用するには、事前に公開する必要があります。
データ開発ページに移動します。
EMR コンソールにログインします。
左側のナビゲーションウィンドウで、 を選択します。
[Spark] ページで、対象のワークスペース名をクリックします。
EMR Serverless Spark ページの左側のナビゲーションウィンドウで、[データ開発] をクリックします。
users_task ジョブを作成します。
[開発] タブで、
アイコンをクリックします。[作成] ダイアログボックスで、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。
データベースとセッションのドロップダウンリストから、データベースと実行中のセッションインスタンスを選択します。
ドロップダウンリストから [SQL セッションの作成] を選択して、新しいセッションを作成することもできます。詳細については、「SQL セッションの管理」をご参照ください。
[実行] をクリックしてジョブを実行します。
結果は [実行結果] タブに表示されます。例外が発生した場合は、[実行に関する問題] タブで詳細を確認できます。
users_task ジョブを公開します。
説明ジョブに指定されたパラメーターはジョブとともに公開され、ジョブがパイプラインで実行されるときに使用されます。セッションパラメーターは、ジョブが SQL エディターで実行されるときに使用されます。
新しい Spark SQL タブで、[公開] をクリックします。
ダイアログボックスで、公開の説明を入力し、[OK] をクリックします。
users_count ジョブを作成します。
[開発] タブで、
アイコンをクリックします。[作成] ダイアログボックスで、users_count などの名前を入力し、デフォルトのタイプである SparkSQL を受け入れて、[OK] をクリックします。
次のコードを新しい Spark SQL ジョブタブ (users_count) にコピーします。
SELECT COUNT(1) FROM students;データベースとセッションのドロップダウンリストから、データベースと実行中のセッションインスタンスを選択します。
ドロップダウンリストから [SQL セッションの作成] を選択して、新しいセッションを作成することもできます。セッション管理の詳細については、「SQL セッションの管理」をご参照ください。
[実行] をクリックしてジョブを実行します。
[実行結果] タブに結果が表示されます。例外が発生した場合は、[実行に関する問題] タブで確認できます。
users_count ジョブを公開します。
説明ジョブに指定されたパラメーターはジョブとともに公開され、ジョブがパイプラインで実行されるときに使用されます。セッションパラメーターは、ジョブが SQL エディターで実行されるときに使用されます。
新しい Spark SQL ジョブタブで、[公開] をクリックします。
表示されるダイアログボックスで、公開の説明を入力し、[OK] をクリックします。
ステップ 2: ワークフローとそのノードの作成
左側のナビゲーションウィンドウで、[ワークフロー] をクリックします。
[ワークフロー] ページで、[ワークフローの作成] をクリックします。
[ワークフローの作成] パネルで、spark_workflow_task などの [ワークフロー名] を入力し、[次へ] をクリックします。
必要に応じて、[その他の設定] セクションのパラメーターを設定できます。パラメーターの詳細については、「ワークフローの管理」をご参照ください。
users_task ノードを追加します。
新しいノードキャンバスで、[ノードの追加] をクリックします。
[ノードの追加] パネルで、[ソースファイルパス] ドロップダウンリストから公開済みの users_task ジョブを選択し、[保存] をクリックします。
users_count ノードを追加します。
[ノードの追加] をクリックします。
[ノードの追加] パネルで、[ソースファイルパス] ドロップダウンリストから公開済みの users_count ジョブを、[アップストリームノード] ドロップダウンリストから users_task を選択し、[保存] をクリックします。
新しいノードキャンバスで、[ワークフローの公開] をクリックします。

[公開] ダイアログボックスで、公開の説明を入力し、[OK] をクリックします。
ステップ 3: ワークフローの実行
[ワークフロー] ページの [ワークフロー名] 列で、新しいワークフローの名前 (例: spark_workflow_task) をクリックします。
[ワークフローインスタンス] ページで、[実行] をクリックします。
説明スケジューリングサイクルを設定した後、[ワークフロー] ページの左側にあるスイッチをオンにしてスケジュールを開始することもできます。
[ワークフローの実行] ダイアログボックスで、[OK] をクリックします。
ステップ 4: インスタンスのステータスの表示
[ワークフロー] ページで、対象のワークフロー (spark_workflow_task など) をクリックします。
[ワークフローインスタンス] ページでは、すべてのワークフローインスタンスとそれぞれの実行時間およびステータスを表示できます。

[ワークフローインスタンス] セクションの [ワークフロー実行 ID] または [ワークフローインスタンスグラフ] タブをクリックして、ワークフローインスタンスグラフを表示します。
対象のノードインスタンスをクリックします。表示されるノード情報ダイアログボックスで、必要に応じて操作を実行したり、情報を表示したりできます。
関連する操作と詳細については、「ノードインスタンスの表示」をご参照ください。

たとえば、[Spark UI] をクリックして Spark ジョブページを開き、Spark タスクに関するリアルタイム情報を表示できます。

[ジョブ実行 ID] をクリックして [ジョブ履歴] ページを開きます。このページでは、メトリック、診断、およびログを表示できます。

ステップ 5: ワークフローの運用保守
[ワークフロー] ページで、対象のワークフローの名前をクリックして [ワークフローインスタンス] ページを開きます。次の操作が可能です:
[ワークフロー情報] セクションで、一部のパラメーターを編集できます。
[ワークフローインスタンス] セクションには、すべてのワークフローインスタンスがリストされます。[ワークフロー実行 ID] をクリックして、対応するワークフローインスタンスグラフを開きます。

ステップ 6: データの表示
左側のナビゲーションウィンドウで、[データ開発] をクリックします。
SparkSQL 開発ジョブを作成します。次に、次のコマンドを入力して実行し、テーブルの詳細を表示します:
SELECT * FROM students;次の情報が返されます:

関連ドキュメント
リソースキューの作成方法の詳細については、「リソースキューの管理」をご参照ください。
SQL セッションの作成方法の詳細については、「SQL セッションの管理」をご参照ください。