다른 AWS 서비스를 사용하여 EMR Serverless 작업을 제출하려면 어떻게 해야 합니까?
다른 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-class 및 example-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-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은 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-class 및 example-jar-paths를 필요한 값으로 바꾸십시오.
관련 정보
AWS Step Functions를 사용하여 EMR Serverless 작업 오케스트레이션
GitHub 웹사이트의 EMR Serverless 샘플
관련 콘텐츠
- 질문됨 일 년 전lg...
- 질문됨 10달 전lg...
- AWS 공식업데이트됨 일 년 전
- AWS 공식업데이트됨 3년 전
- AWS 공식업데이트됨 9달 전