

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

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

Os desenvolvedores podem chamar a API do Amazon EMR usando código Java personalizado para fazer as mesmas coisas que fariam com o console ou com a CLI do Amazon EMR. Esta seção fornece as end-to-end etapas necessárias para instalar AWS Toolkit for Eclipse e executar uma amostra de código-fonte Java totalmente funcional que adiciona etapas a um cluster do Amazon EMR.

**nota**  
Este exemplo se concentra em Java, mas o Amazon EMR também oferece suporte a várias linguagens de programação com uma coleção do Amazon EMR. SDKs Para obter mais informações, consulte [Use SDKs para ligar para o Amazon EMR APIs](call-emr-using-sdks.md).

 Este exemplo de código-fonte Java demonstra como executar as seguintes tarefas usando a API do Amazon EMR: 
+ Recupere AWS as credenciais e envie-as ao Amazon EMR para fazer chamadas de API
+ Configurar uma nova etapa personalizada e uma nova etapa predefinida
+ Adicionar novas etapas a um cluster existente do Amazon EMR
+ Recupere a etapa do cluster IDs de um cluster em execução

**nota**  
Este exemplo demonstra como adicionar etapas a um cluster existente e, portanto, requer um cluster ativo na sua conta.

Antes de começar, instale a versão do **Eclipse IDE for Java EE Developers (Eclipse IDE para desenvolvedores de Java EE)** que corresponda a sua plataforma do computador. Para obter mais informações, acesse a página de [downloads do Eclipse](http://www.eclipse.org/downloads/).

Em seguida, instale o plug-in de desenvolvimento de banco de dados para o Eclipse.

**Instalar o plug-in de desenvolvimento de banco de dados para o Eclipse**

1. Abra o Eclipse IDE.

1. Escolha **Help (Ajuda)** e **Install New Software (Instalar novo software)**.

1. No campo **Work with: (Trabalhar com:)**, digite **http://download.eclipse.org/releases/kepler** ou o caminho que corresponda ao número da versão do seu Eclipse IDE.

1. Na lista de itens, escolha **Database Development (Desenvolvimento de banco de dados)** e **Finish (Concluir)**.

1. Reinicie o Eclipse quando solicitado.

Em seguida, instale o kit de ferramentas para Eclipse a fim de disponibilizar os modelos de projeto de código-fonte úteis e configurados previamente.

**Instalar o kit de ferramentas para Eclipse**

1. Abra o Eclipse IDE.

1. Escolha **Help (Ajuda)** e **Install New Software (Instalar novo software)**.

1. No campo **Work with: (Trabalhar com:)**, digite **https://aws.amazon.com/eclipse**.

1. Na lista de itens, escolha **AWS Toolkit for Eclipse** e **Finish**.

1. Reinicie o Eclipse quando solicitado.

Em seguida, crie um novo projeto AWS Java e execute o código-fonte Java de amostra.

**Para criar um novo projeto AWS Java**

1. Abra o Eclipse IDE.

1. Escolha **File (Arquivo)**, **New (Novo)** e **Other (Outros)**.

1. Na caixa de diálogo **Select a wizard**, escolha **AWS Java Project** e **Next**.

1. Na caixa de diálogo **Novo projeto AWS Java**, no **Project name:** campo, insira o nome do seu novo projeto, por exemplo**EMR-sample-code**.

1. Escolha **Configurar AWS contas...**, insira suas chaves de acesso públicas e privadas e escolha **Concluir**. Para obter mais informações sobre a criação de chaves de acesso, consulte [How do I get security credentials?](https://docs.aws.amazon.com/general/latest/gr/getting-aws-sec-creds.html) na *Referência geral da Amazon Web Services*.
**nota**  
Você **não** deve incorporar chaves de acesso diretamente no código. O SDK do Amazon EMR permite colocar as chaves de acesso em locais conhecidos para que você não precise mantê-las em código.

1. No novo projeto Java, clique com o botão direito do mouse na pasta **src** e, em seguida, escolha **New (Novo)** e **Class (Classe)**.

1. Na caixa de diálogo **Java Class (Classe Java)**, no campo **Name (Nome)**, insira um nome para sua nova classe, por exemplo, **main**.

1. Na seção **Which method stubs would you like to create? (Quais stubs de método você gostaria de criar?)** escolha **public static void main (String [] args)** e **Finish (Concluir)**.

1. Insira o código-fonte em Java dentro de sua nova classe e adicione as declarações adequadas de **import (importação)**para as classes e métodos no exemplo. Para sua conveniência, a listagem do código-fonte completo é mostrada abaixo. 
**nota**  
No código de exemplo a seguir, substitua o exemplo de ID de cluster (JobFlowId){{`j-xxxxxxxxxxxx`}}, por um ID de cluster válido em sua conta encontrado no Console de gerenciamento da AWS ou usando o seguinte AWS CLI comando:   

   ```
   aws emr list-clusters --active | grep "Id"
   ```
Além disso, substitua o caminho de exemplo do Amazon S3, {{`s3://path/to/my/jarfolder`}}, pelo caminho válido para o seu JAR. Por fim, substitua o nome da classe do exemplo, {{`com.my.Main1`}}, pelo nome correto da classe em seu JAR, se aplicável. 

   ```
   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. Escolha **Run (Executar)**, **Run As (Executar como)** e **Java Application (Aplicativo Java)**.

1. Se a amostra for executada corretamente, uma lista das IDs novas etapas aparecerá na janela do console do Eclipse IDE. A saída correta é semelhante à seguinte:

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