別の AWS サービスを使用して EMR Serverless ジョブを送信する方法を教えてください。
別の AWS サービスを使用して Amazon EMR Serverless ジョブを送信したいと考えています。
解決策
**注:**AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、「AWS CLI エラーのトラブルシューティング」を参照してください。また、AWS CLI の最新バージョンを使用していることを確認してください。
別の AWS サービスを使用して EMR Serverless ジョブを送信するには、以下の方法を使用します。
AWS Step Functions
Step Functions を使用して EMR Serverless ジョブを送信するには、ジョブをステップとして送信する Step Functions ステートマシンを作成します。EMR Serverless ジョブを送信する Step Functions ステートマシン定義の例を次に示します。また、ステートマシンは、受信したジョブステータスに基づいて成功または失敗状態に移行します。
{ "Comment": "Submit an EMR Serverless job", "StartAt": "Submit EMR Serverless Job", "States": { "Submit EMR Serverless Job": { "Type": "Task", "Resource": "arn:aws:states:::aws-sdk:emr-serverless:startJobRun", "Parameters": { "ApplicationId": "example-application-id", "ExecutionRoleArn": "example-execution-role-arn", "JobDriver": { "SparkSubmitJobDriver": { "EntryPoint": "example-entry-point", "SparkSubmitParameters": "--class example-main-class --jars example-jar-paths" } }, "ConfigurationOverrides": { "MonitoringConfiguration": { "PersistentAppUI": "ENABLED" } } }, "Next": "Get Job Run Status" }, "Get Job Run Status": { "Type": "Task", "Resource": "arn:aws:states:::aws-sdk:emr-serverless:getJobRun", "Parameters": { "JobRunId.$": "$$.Task.Submit EMR Serverless Job.Output.JobRunId" }, "Next": "Job Run Succeeded?" }, "Job Run Succeeded?": { "Type": "Choice", "Choices": [ { "Variable": "$$.Task.Get Job Run Status.Output.JobRun.State", "StringEquals": "SUCCEEDED", "Next": "Success" } ], "Default": "Failure" }, "Success": { "Type": "Succeed" }, "Failure": { "Type": "Fail" } } }
注: example-application-id、example-execution-role-arn、example-entry-point、example-main-class、example-jar-paths を必要な値に置き換えてください。
AWS SDK
プログラムでジョブを送信するには、AWS SDK を使用して EMR Serverless API を操作します。AWS SDK for Python (Boto3) を使用して EMR Serverless ジョブを送信する方法の例を次に示します。
注: 次の Python スクリプトは、Boto3 ライブラリを使用して EMR Serverless API の start_job_run メソッドを呼び出します。次に、API によって返されたジョブ実行 ID が出力されます。
import boto3 emr_serverless = boto3.client('emr-serverless') response = emr_serverless.start_job_run( ApplicationId='example-application-id', ExecutionRoleArn='example-execution-role-arn', JobDriver={ 'SparkSubmitJobDriver': { 'EntryPoint': 'example-entry-point', 'SparkSubmitParameters': '--class example-main-class --jars example-jar-paths' } }, ConfigurationOverrides={ 'MonitoringConfiguration': { 'PersistentAppUI': 'ENABLED' } } ) job_run_id = response['JobRunId'] print(f'Submitted EMR Serverless job with ID: {job_run_id}')
注: example-application-id、example-execution-role-arn、example-entry-point、example-main-class、example-jar-paths を必要な値に置き換えてください。
AWS CLI
AWS CLI を使用して EMR Serverless ジョブを送信するには、次の start-job-run コマンドを実行します。
aws emr-serverless start-job-run \ --application-id example-application-id \ --execution-role-arn example-execution-role-arn \ --job-driver '{"SparkSubmitJobDriver": {"EntryPoint": "example-entry-point", "SparkSubmitParameters": "--class example-main-class --jars example-jar-paths"}}' \ --configuration-overrides '{"MonitoringConfiguration": {"PersistentAppUI": "ENABLED"}}'
注: example-application-id、example-execution-role-arn、example-entry-point、example-main-class、example-jar-paths を必要な値に置き換えてください。
AWS CloudFormation
AWS CloudFormation を使用して AWS CloudFormation リソースを定義およびプロビジョニングできます。EMR Serverless アプリケーションを作成する CloudFormation テンプレートの例を次に示します。
注: 次の CloudFormation テンプレートは、指定されたリリースラベルと初期キャパシティで EMR Serverless アプリケーションを作成します。
Resources: EMRServerlessApplication: Type: AWS::EMRServerless::Application Properties: ReleaseLabel: emr-6.3.0 Type: SPARK InitialCapacity: WorkerCount: 2 WorkerConfiguration: CPU: '2vCPU' Memory: '8GB' EMRServerlessJobRun: Type: AWS::EMRServerless::JobRun Properties: ApplicationId: !Ref EMRServerlessApplication ExecutionRoleArn: example-execution-role-arn JobDriver: SparkSubmitJobDriver: EntryPoint: example-entry-point SparkSubmitParameters: '--class example-main-class --jars example-jar-paths' ConfigurationOverrides: MonitoringConfiguration: PersistentAppUI: ENABLED
注: example-execution-role-arn、example-entry-point、example-main-class、example-jar-paths を必要な値に置き換えてください。
関連情報
AWS Step Functions による EMR Serverless ジョブのオーケストレーション
EMR Serverless の例 (GitHub のウェブサイト)
関連するコンテンツ
- 質問済み 2年前lg...
- 質問済み 7年前lg...
- 質問済み 4ヶ月前lg...
- AWS公式更新しました 1年前
- AWS公式更新しました 1年前