AWS re:Post을(를) 사용하면 다음에 동의하게 됩니다. AWS re:Post 이용 약관

다른 AWS 서비스를 사용하여 EMR Serverless 작업을 제출하려면 어떻게 해야 합니까?

3분 분량
0

다른 AWS 서비스를 사용하여 Amazon EMR Serverless 작업을 제출하고 싶습니다.

해결 방법

참고: AWS Command Line Interface(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-classexample-jar-paths를 필요한 값으로 바꾸십시오.

AWS SDK

프로그래밍 방식으로 작업을 제출하려면 AWS SDK를 사용하여 EMR Serverless API와 상호 작용하십시오. 다음은 Python용 AWS SDK(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-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-id, example-execution-role-arn, example-entry-point, example-main-classexample-jar-paths를 필요한 값으로 바꾸십시오.

AWS CloudFormation

AWS CloudFormation은 EMR Serverless 리소스를 정의하고 프로비저닝하는 데 사용할 수 있습니다. 다음은 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-classexample-jar-paths를 필요한 값으로 바꾸십시오.

관련 정보

작업 실행

EMR Serverless 작업 실행

AWS Step Functions를 사용하여 EMR Serverless 작업 오케스트레이션

GitHub 웹사이트의 EMR Serverless 샘플

AWS 공식
AWS 공식업데이트됨 2달 전