Defining job template parameters
Job template parameters allow you to specify variables in the job template. Values for
these parameter variables will need to be specified when starting a job run using that job
template. Job template parameters are specified in ${parameterName} format. You
can choose to specify any value in a jobTemplateData field as a job template
parameter. For each of the job template parameter variables, specify its data type
(STRING or NUMBER) and optionally a default value. The example
below shows how you can specify job template parameters for entry point location, main
class, and S3 log location values.
To specify entry point location, main class, and Amazon S3 log location as job template parameters
-
Create a
create-job-template-request.jsonfile and specify the required parameters for your job template, as shown in the following example JSON file. For more information about the parameters, see the 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/" } } } } -
Use the
create-job-templatecommand with a path to thecreate-job-template-request.jsonfile stored locally or in Amazon S3.aws emr-containers create-job-template \ --cli-input-json file://./create-job-template-request.json
To start a job run using job template with job template parameters
To start a job run with a job template containing job template parameters, specify the
job template id as well as values for job template parameters in the
StartJobRun API request as shown below.
aws emr-containers start-job-run \ --virtual-cluster-id123456\ --namemyjob\ --job-template-id1234abcd\ --job-template-parameters '{"EntryPointLocation": "entry_point_location","MainClass": "ExampleMainClass","LogS3BucketUri": "s3://example_s3_bucket/"}'