ジョブテンプレートパラメータの定義 - Amazon EMR

ジョブテンプレートパラメータの定義

ジョブテンプレートパラメータを使用すると、ジョブテンプレート内の変数を指定できます。これらのパラメータ変数の値は、そのジョブテンプレートを使用してジョブ実行を開始するときに指定する必要があります。ジョブテンプレートパラメータは ${parameterName} フォーマットで指定されます。jobTemplateData フィールド内の任意の値をジョブテンプレートパラメータとして指定できます。ジョブテンプレートパラメータ変数ごとに、データタイプ (STRING または NUMBER) を指定し、オプションでデフォルト値を指定します。以下の例は、エントリポイントロケーション、メインクラス、S3 ログロケーション値のジョブテンプレートパラメータを指定する方法を示しています。

エントリポイントの場所、メインクラス、Amazon S3 ログの場所をジョブテンプレートパラメータとして指定するには

  1. create-job-template-request.json ファイルを作成し、以下の JSON ファイルの例に示すように、ジョブテンプレートに必要なパラメータを指定します。パラメータの詳細については、「CreateJobTemplate API」を参照してください。

    { "name": "mytemplate", "jobTemplateData": { "executionRoleArn": "iam_role_arn_for_job_execution", "releaseLabel": "emr-6.7.0-latest", "jobDriver": { "sparkSubmitJobDriver": { "entryPoint": "${EntryPointLocation}", "entryPointArguments": [ "argument1","argument2",...], "sparkSubmitParameters": "--class ${MainClass} --conf spark.executor.instances=2 --conf spark.executor.memory=2G --conf spark.executor.cores=2 --conf spark.driver.cores=1" } }, "configurationOverrides": { "applicationConfiguration": [ { "classification": "spark-defaults", "properties": { "spark.driver.memory":"2G" } } ], "monitoringConfiguration": { "persistentAppUI": "ENABLED", "cloudWatchMonitoringConfiguration": { "logGroupName": "my_log_group", "logStreamNamePrefix": "log_stream_prefix" }, "s3MonitoringConfiguration": { "logUri": "${LogS3BucketUri}" } } }, "parameterConfiguration": { "EntryPointLocation": { "type": "STRING" }, "MainClass": { "type": "STRING", "defaultValue":"Main" }, "LogS3BucketUri": { "type": "STRING", "defaultValue":"s3://my_s3_log_location/" } } } }
  2. ローカルまたは Amazon S3 に保存されている create-job-template-request.json ファイルへのパスを指定して、create-job-template コマンドを使用します。

    aws emr-containers create-job-template \ --cli-input-json file://./create-job-template-request.json

ジョブテンプレートパラメータを指定したジョブテンプレートを使用してジョブ実行を開始するには

ジョブテンプレートパラメータを含むジョブテンプレートを使用してジョブ実行を開始するには、以下に示すように StartJobRun API リクエストでジョブテンプレート ID とジョブテンプレートパラメータの値を指定します。

aws emr-containers start-job-run \ --virtual-cluster-id 123456 \ --name myjob \ --job-template-id 1234abcd \ --job-template-parameters '{"EntryPointLocation": "entry_point_location","MainClass": "ExampleMainClass","LogS3BucketUri": "s3://example_s3_bucket/"}'