Exemplo completo de código-fonte Java para o Amazon EMR - Amazon EMR

Exemplo completo de código-fonte Java para o Amazon EMR

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 etapas completas necessárias para a instalação do AWS Toolkit for Eclipse e para a execução de um exemplo 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 diversas linguagens de programação com uma coleção de SDKs do Amazon EMR. Para obter mais informações, consulte Uso de SDKs para chamar APIs do Amazon EMR.

Este exemplo de código-fonte Java demonstra como executar as seguintes tarefas usando a API do Amazon EMR:

  • Recuperar credenciais da AWS e enviá-las 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

  • Recuperar os IDs das etapas 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.

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.

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

  3. 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.

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

  5. 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.

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

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

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

  5. Reinicie o Eclipse quando solicitado.

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

Criar um novo projeto da AWS em Java
  1. Abra o Eclipse IDE.

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

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

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

  5. Escolha Configure AWS accounts…, insira suas chaves de acesso públicas e privadas e clique em Finish. Para obter mais informações sobre a criação de chaves de acesso, consulte How do I get security credentials? 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.

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

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

  8. 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).

  9. 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 ID do cluster de exemplo (JobFlowId), j-xxxxxxxxxxxx, por um ID do cluster válido em sua conta, que é encontrado no AWS Management Console ou ao usar o seguinte comando da AWS CLI:

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

  11. Se o exemplo for executado corretamente, uma lista de IDs para as novas etapas aparece na janela do console do Eclipse IDE. A saída correta é semelhante à seguinte:

    [s-39BLQZRJB2E5E, s-1L6A4ZU2SAURC]