

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# End-to-end Ejemplo de código fuente Java de Amazon EMR
<a name="emr-common-programming-sample"></a>

Los desarrolladores pueden llamar a la API de Amazon EMR mediante código Java personalizado para hacer lo mismo que con la consola de Amazon EMR o la CLI. En esta sección se proporcionan los end-to-end pasos necesarios para instalar AWS Toolkit for Eclipse y ejecutar un ejemplo de código fuente de Java completamente funcional que añade pasos a un clúster de Amazon EMR.

**nota**  
Este ejemplo se centra en Java, pero Amazon EMR también admite varios lenguajes de programación con una colección de Amazon EMR. SDKs Para obtener más información, consulte [Se usa SDKs para llamar a Amazon EMR APIs](call-emr-using-sdks.md).

 Este código fuente de Java de ejemplo muestra cómo realizar las siguientes tareas a través de la API de Amazon EMR: 
+ Recupere AWS las credenciales y envíelas a Amazon EMR para realizar llamadas a la API
+ Configurar un nuevo paso personalizado y un nuevo paso predefinido
+ Agregar nuevos pasos a un clúster de Amazon EMR existente
+ Recupere un paso IDs de clúster de un clúster en ejecución

**nota**  
Este ejemplo muestra cómo añadir pasos a un clúster existente y requiere que tenga un clúster activo en su cuenta.

Antes de comenzar, instale una versión del **Eclipse IDE for Java EE Developers (IDE de Eclipse para Java EE Developers)** que coincida con su plataforma informática. Para obtener más información, consulte [Eclipse Downloads](http://www.eclipse.org/downloads/).

A continuación, instale el complemento Database Development para Eclipse.

**Para instalar el complemento Database Development para Eclipse**

1. Abra el IDE de Eclipse.

1. Elija **Help (Ayuda)** e **Install New Software (Instalar software nuevo)**.

1. En el campo **Work with (Trabajar con)**, escriba **http://download.eclipse.org/releases/kepler** o la ruta que coincida con el número de versión de su IDE de Eclipse.

1. En la lista de elementos, elija **Database Development (Desarrollo de bases de datos)** y **Finish (Finalizar)**.

1. Reinicie Eclipse cuando se le solicite.

A continuación, instale el Kit de herramientas para Eclipse para hacer que estén disponibles las útiles plantillas de proyecto de código fuente preconfiguradas.

**Para instalar el Kit de herramientas para Eclipse**

1. Abra el IDE de Eclipse.

1. Elija **Help (Ayuda)** e **Install New Software (Instalar software nuevo)**.

1. En el campo **Work with (Trabajar con)**, escriba **https://aws.amazon.com/eclipse**.

1. En la lista de elementos, seleccione **AWS Toolkit for Eclipse** y **Terminar**.

1. Reinicie Eclipse cuando se le solicite.

A continuación, cree un nuevo proyecto de AWS Java y ejecute el código fuente de Java de muestra.

**Para crear un nuevo proyecto de AWS Java**

1. Abra el IDE de Eclipse.

1. Elija **File (Archivo)**, **New (Nuevo)** y **Other (Otros)**.

1. En el cuadro de diálogo **Seleccionar un asistente**, seleccione **Proyecto de Java de AWS ** y **Siguiente**.

1. En el cuadro de diálogo **Nuevo proyecto AWS Java**, introduzca en el **Project name:** campo el nombre del nuevo proyecto, por ejemplo**EMR-sample-code**.

1. Elija **Configurar AWS cuentas...**, introduzca sus claves de acceso públicas y privadas y elija **Finalizar**. Para obtener más información sobre cómo crear las claves de acceso, consulte [¿Cómo obtengo credenciales de seguridad?](https://docs.aws.amazon.com/general/latest/gr/getting-aws-sec-creds.html) en la *Referencia general de Amazon Web Services*.
**nota**  
**No** debe incrustar las claves de acceso directamente en el código. El SDK de Amazon EMR le permite colocar las claves de acceso en ubicaciones conocidas para que no tenga que mantenerlas en el código.

1. En el proyecto de Java nuevo, haga clic con el botón derecho en la carpeta **src** y, a continuación, elija **New (Crear)** y **Class (Clase)**.

1. En el cuadro de diálogo **Java Class (Clase de Java)**, en el campo **Name (Nombre)**, introduzca un nombre para la clase nueva, por ejemplo **main**.

1. En la sección **Which method stubs would you like to create? (¿Qué stubs de método le gustaría crear?)**, elija **public static void main(String[] args)** y **Finish (Finalizar)**.

1. Escriba el código fuente de Java dentro de la clase nueva y añada las instrucciones **import **adecuadas para las clases y los métodos del ejemplo. Para su comodidad se muestra a continuación el código fuente completo. 
**nota**  
En el siguiente código de ejemplo, sustituya el ID de clúster de ejemplo (JobFlowId){{`j-xxxxxxxxxxxx`}}, por un ID de clúster válido en su cuenta que se encuentre en el comando siguiente Consola de administración de AWS o mediante el siguiente AWS CLI comando:   

   ```
   aws emr list-clusters --active | grep "Id"
   ```
Además, sustituya la ruta de Amazon S3 de ejemplo, {{`s3://path/to/my/jarfolder`}}, por la ruta válida a su archivo JAR. Por último, sustituya el nombre de clase de ejemplo {{`com.my.Main1`}} por el nombre correcto de la clase en su JAR, si procede. 

   ```
   import com.amazonaws.AmazonClientException;
   import com.amazonaws.auth.AWSCredentials;
   import com.amazonaws.auth.AWSStaticCredentialsProvider;
   import com.amazonaws.auth.profile.ProfileCredentialsProvider;
   import com.amazonaws.services.elasticmapreduce.AmazonElasticMapReduce;
   import com.amazonaws.services.elasticmapreduce.AmazonElasticMapReduceClientBuilder;
   import com.amazonaws.services.elasticmapreduce.model.*;
   import com.amazonaws.services.elasticmapreduce.util.StepFactory;
   
   public class Main {
   
   	public static void main(String[] args) {
   		AWSCredentials credentials_profile = null;
   		try {
   			credentials_profile = new ProfileCredentialsProvider("default").getCredentials();
   		} catch (Exception e) {
   			throw new AmazonClientException(
   					"Cannot load credentials from .aws/credentials file. " +
   							"Make sure that the credentials file exists and the profile name is specified within it.",
   					e);
   		}
   
   		AmazonElasticMapReduce emr = AmazonElasticMapReduceClientBuilder.standard()
   				.withCredentials(new AWSStaticCredentialsProvider(credentials_profile))
   				.withRegion(Regions.US_WEST_1)
   				.build();
   
   		// Run a bash script using a predefined step in the StepFactory helper class
   		StepFactory stepFactory = new StepFactory();
   		StepConfig runBashScript = new StepConfig()
   				.withName("Run a bash script")
   				.withHadoopJarStep(stepFactory.newScriptRunnerStep("s3://jeffgoll/emr-scripts/create_users.sh"))
   				.withActionOnFailure("CONTINUE");
   
   		// Run a custom jar file as a step
   		HadoopJarStepConfig hadoopConfig1 = new HadoopJarStepConfig()
   				.withJar("s3://path/to/my/jarfolder") // replace with the location of the jar to run as a step
   				.withMainClass("com.my.Main1") // optional main class, this can be omitted if jar above has a manifest
   				.withArgs("--verbose"); // optional list of arguments to pass to the jar
   		StepConfig myCustomJarStep = new StepConfig("RunHadoopJar", hadoopConfig1);
   
   		AddJobFlowStepsResult result = emr.addJobFlowSteps(new AddJobFlowStepsRequest()
   				.withJobFlowId("j-xxxxxxxxxxxx") // replace with cluster id to run the steps
   				.withSteps(runBashScript, myCustomJarStep));
   
   		System.out.println(result.getStepIds());
   
   	}
   }
   ```

1. Elija **Run (Ejecutar)**, **Run As (Ejecutar como)** y **Java Application (Aplicación de Java)**.

1. Si el ejemplo se ejecuta correctamente, aparecerá una lista de IDs los nuevos pasos en la ventana de la consola del IDE de Eclipse. El resultado correcto es similar al siguiente:

   ```
   [s-39BLQZRJB2E5E, s-1L6A4ZU2SAURC]
   ```