¿Cómo uso otro servicio de AWS para enviar un trabajo de EMR sin servidor?
Quiero usar otro servicio de AWS para enviar un trabajo de Amazon EMR sin servidor.
Solución
Nota: Si se muestran errores al ejecutar comandos de la Interfaz de la línea de comandos de AWS (AWS CLI), consulte Troubleshoot AWS CLI errors. Además, asegúrate de utilizar la versión más reciente de la AWS CLI.
Para usar otro servicio de AWS para enviar un trabajo de EMR sin servidor, utiliza los métodos siguientes:
AWS Step Functions
Para usar Step Functions para enviar un trabajo de EMR sin servidor, crea una máquina de estado de Step Functions que envíe el trabajo como un paso. El siguiente es un ejemplo de una definición de máquina de estado de Step Functions que envía un trabajo de EMR sin servidor. Además, la máquina de estado pasa a un estado de éxito o error según el estado del trabajo recibido.
{ "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" } } }
Nota: Sustituye example-application-id, example-execution-role-arn, example-entry-point, example-main-class y example-jar-paths con los valores necesarios.
AWS SDK
Para enviar trabajos mediante programación, utilice los AWS SDK para interactuar con la API de EMR sin servidor. El siguiente es un ejemplo de cómo usar el AWS SDK para Python (Boto3) para enviar un trabajo de EMR sin servidor:
Nota: El siguiente script de Python usa la biblioteca Boto3 para llamar al método start_job_run de la API de EMR sin servidor. A continuación, se imprime el ID de ejecución del trabajo devuelto por la API.
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}')
Nota: Sustituye example-application-id, example-execution-role-arn, example-entry-point, example-main-class y example-jar-paths con los valores necesarios.
AWS CLI
Para usar la AWS CLI para enviar un trabajo de EMR sin servidor, ejecuta el siguiente comando con 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"}}'
Nota: Sustituye example-application-id, example-execution-role-arn, example-entry-point, example-main-class y example-jar-paths con los valores necesarios.
AWS CloudFormation
AWS CloudFormation se puede utilizar para definir y aprovisionar recursos de EMR sin servidor. El siguiente es un ejemplo de una plantilla de CloudFormation que crea una aplicación de EMR sin servidor.
Nota: La siguiente plantilla de CloudFormation crea una aplicación de EMR sin servidor con una etiqueta de versión y una capacidad inicial especificadas.
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
Nota: Sustituye example-execution-role-arn, example-entry-point, example-main-class y example-jar-paths con los valores necesarios.
Información relacionada
Running jobs (Trabajos en ejecución)
Run an EMR Serverless job (Ejecución de un trabajo de EMR sin servidor)
Orchestrate EMR Serverless jobs with AWS Step Functions (Orquestación de trabajos de EMR sin servidor con AWS Step Functions)
Ejemplos de EMR sin servidor en el sitio web de GitHub
Contenido relevante
- OFICIAL DE AWSActualizada hace 10 meses
- OFICIAL DE AWSActualizada hace un año
- OFICIAL DE AWSActualizada hace 3 meses