AWS re:Postを使用することにより、以下に同意したことになります AWS re:Post 利用規約

別の AWS サービスを使用して EMR Serverless ジョブを送信する方法を教えてください。

所要時間2分
0

別の 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-idexample-execution-role-arnexample-entry-pointexample-main-classexample-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-idexample-execution-role-arnexample-entry-pointexample-main-classexample-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-idexample-execution-role-arnexample-entry-pointexample-main-classexample-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-arnexample-entry-pointexample-main-classexample-jar-paths を必要な値に置き換えてください。

関連情報

ジョブを実行する

EMR Serverless ジョブを実行する

AWS Step Functions による EMR Serverless ジョブのオーケストレーション

EMR Serverless の例 (GitHub のウェブサイト)

AWS公式
AWS公式更新しました 2ヶ月前
コメントはありません

関連するコンテンツ