Criar um pipeline do Dataflow usando Java
Este documento mostra como configurar seu projeto do Google Cloud, criar um projeto Maven usando o SDK do Apache Beam para Java e executar um exemplo de pipeline no serviço Dataflow. O pipeline lê um arquivo de texto do Cloud Storage, conta o número de palavras exclusivas no arquivo e grava as contagens de palavras no Cloud Storage.
Para receber orientações passo a passo sobre esta tarefa diretamente no Console do Cloud, clique em Orientação:
As seções a seguir guiam você pelas mesmas etapas que você encontra clicando em Orientações.
Antes de começar
- Faça login na sua conta do Google Cloud. Se você começou a usar o Google Cloud agora, crie uma conta para avaliar o desempenho de nossos produtos em situações reais. Clientes novos também recebem US$ 300 em créditos para executar, testar e implantar cargas de trabalho.
-
No console do Google Cloud, na página do seletor de projetos, selecione ou crie um projeto do Google Cloud.
-
Verifique se o faturamento está ativado para seu projeto na nuvem. Saiba como verificar se o faturamento está ativado em um projeto.
-
Ative as APIs Dataflow, Compute Engine, Cloud Logging, Cloud Storage, Google Cloud Storage JSON, BigQuery, Cloud Pub/Sub, Cloud Datastore e Cloud Resource Manager .
-
Crie uma conta de serviço:
-
No console do Cloud, acesse a página Criar conta de serviço.
Acesse "Criar conta de serviço" - Selecione o projeto.
-
No campo Nome da conta de serviço, insira um nome. O console do Cloud preenche o campo ID da conta de serviço com base nesse nome.
No campo Descrição da conta de serviço, insira uma descrição. Por exemplo,
Service account for quickstart
. - Clique em Criar e continuar.
-
Para fornecer acesso ao projeto, conceda os seguintes papéis à conta de serviço: Projeto > Proprietário.
Na lista Selecionar um papel, escolha um.
Para papéis adicionais, clique em
Adicionar outro papel e adicione cada papel adicional. - Clique em Continuar.
-
Clique em Concluído para terminar a criação da conta de serviço.
Não feche a janela do navegador. Você vai usá-la na próxima etapa.
-
-
Crie uma chave de conta de serviço:
- No console do Cloud, clique no endereço de e-mail da conta de serviço que você criou.
- Clique em Chaves.
- Clique em Adicionar chave e em Criar nova chave.
- Clique em Criar. O download de um arquivo de chave JSON é feito no seu computador.
- Clique em Fechar.
-
Defina a variável de ambiente
GOOGLE_APPLICATION_CREDENTIALS
como o caminho do arquivo JSON que contém a chave da conta de serviço. Essa variável só se aplica à sessão de shell atual. Dessa maneira, se você abrir uma nova sessão, defina a variável novamente. -
No console do Google Cloud, na página do seletor de projetos, selecione ou crie um projeto do Google Cloud.
-
Verifique se o faturamento está ativado para seu projeto na nuvem. Saiba como verificar se o faturamento está ativado em um projeto.
-
Ative as APIs Dataflow, Compute Engine, Cloud Logging, Cloud Storage, Google Cloud Storage JSON, BigQuery, Cloud Pub/Sub, Cloud Datastore e Cloud Resource Manager .
-
Crie uma conta de serviço:
-
No console do Cloud, acesse a página Criar conta de serviço.
Acesse "Criar conta de serviço" - Selecione o projeto.
-
No campo Nome da conta de serviço, insira um nome. O console do Cloud preenche o campo ID da conta de serviço com base nesse nome.
No campo Descrição da conta de serviço, insira uma descrição. Por exemplo,
Service account for quickstart
. - Clique em Criar e continuar.
-
Para fornecer acesso ao projeto, conceda os seguintes papéis à conta de serviço: Projeto > Proprietário.
Na lista Selecionar um papel, escolha um.
Para papéis adicionais, clique em
Adicionar outro papel e adicione cada papel adicional. - Clique em Continuar.
-
Clique em Concluído para terminar a criação da conta de serviço.
Não feche a janela do navegador. Você vai usá-la na próxima etapa.
-
-
Crie uma chave de conta de serviço:
- No console do Cloud, clique no endereço de e-mail da conta de serviço que você criou.
- Clique em Chaves.
- Clique em Adicionar chave e em Criar nova chave.
- Clique em Criar. O download de um arquivo de chave JSON é feito no seu computador.
- Clique em Fechar.
-
Defina a variável de ambiente
GOOGLE_APPLICATION_CREDENTIALS
como o caminho do arquivo JSON que contém a chave da conta de serviço. Essa variável só se aplica à sessão de shell atual. Dessa maneira, se você abrir uma nova sessão, defina a variável novamente. - Crie um bucket do Cloud Storage:
- No console do Cloud, acesse a página Navegador do Cloud Storage.
- Clique em Criar bucket.
- Na página Criar um bucket, insira as informações do seu bucket. Para ir à próxima
etapa, clique em Continuar.
- Em Nomear o bucket, insira um nome exclusivo. Não inclua informações confidenciais no nome do bucket já que o namespace dele é global e visível para o público.
-
Em Escolha um local para armazenar seus dados, faça o seguinte:
- Selecione uma opção de Tipo de local.
- Escolha uma opção de Local.
- Em Escolha uma classe de armazenamento padrão para seus dados, selecione o seguinte: Standard.
- Em Escolha como controlar o acesso a objetos, selecione uma opção de Controle de acesso.
- Em Configurações avançadas (opcional), especifique um método de criptografia, uma política de retenção ou rótulos de bucket.
- Clique em Criar.
- Copie o seguinte, conforme necessário em uma seção posterior:
- Seu nome do bucket do Cloud Storage.
- É o ID do seu projeto no Google Cloud. Para encontrar esse ID, consulte Como identificar projetos.
- Faça o download e instale a versão 11 do
Kit de desenvolvimento para Java (JDK, na sigla em inglês). (O Dataflow continua
sendo compatível com a versão 8.) Confirme se a variável de ambiente
JAVA_HOME
está definida e aponta para a instalação do JDK. - Faça o download e instale o Apache Maven seguindo o guia de instalação (links em inglês) para seu sistema operacional específico.
Receber o código do pipeline
O SDK do Apache Beam (em inglês) é um modelo de programação de código aberto para pipelines de processamento de dados. Esses pipelines são definidos usando um programa do Apache Beam, e é possível escolher um executor, como o Dataflow, para executar o pipeline.
- No shell ou no terminal, use o
plug-in de arquétipo do Maven (em inglês) para criar um projeto Maven no computador que
contenha os exemplos
WordCount
do SDK do Apache Beam:mvn archetype:generate \ -DarchetypeGroupId=org.apache.beam \ -DarchetypeArtifactId=beam-sdks-java-maven-archetypes-examples \ -DarchetypeVersion=2.38.0 \ -DgroupId=org.example \ -DartifactId=word-count-beam \ -Dversion="0.1" \ -Dpackage=org.apache.beam.examples \ -DinteractiveMode=false
O comando cria um novo diretório chamado
word-count-beam
no diretório atual. O diretórioword-count-beam
contém um arquivopom.xml
simples e uma série de exemplos de pipelines que contam palavras em arquivos de texto. - Verifique se o diretório
word-count-beam
contém o arquivopom.xml
:Linux ou macOS
cd word-count-beam/ ls
A saída é esta:
pom.xml src
Windows
cd word-count-beam/ dir
A saída é esta:
pom.xml src
- Verifique se o projeto Maven contém os pipelines de exemplo:
Linux ou macOS
ls src/main/java/org/apache/beam/examples/
A saída é esta:
DebuggingWordCount.java WindowedWordCount.java common MinimalWordCount.java WordCount.java
Windows
dir src/main/java/org/apache/beam/examples/
A saída é esta:
DebuggingWordCount.java WindowedWordCount.java common MinimalWordCount.java WordCount.java
Para ver uma introdução detalhada aos conceitos do Apache Beam usados nestes exemplos, consulte
o Exemplo de WordCount do Apache Beam. As instruções nas próximas
seções usam
WordCount.java
.
Execute o pipeline localmente
- No shell ou terminal, execute o pipeline
WordCount
localmente a partir do diretórioword-count-beam
:mvn compile exec:java \ -Dexec.mainClass=org.apache.beam.examples.WordCount \ -Dexec.args="--output=counts"
Os arquivos de saída têm o prefixo
counts
e são gravados no diretórioword-count-beam
. Eles contêm palavras exclusivas do texto de entrada e o número de ocorrências de cada palavra.
Executar o pipeline no serviço do Dataflow
- No shell ou no terminal, crie e execute o pipeline
WordCount
no serviço do Dataflow a partir do diretórioword-count-beam
:mvn -Pdataflow-runner compile exec:java \ -Dexec.mainClass=org.apache.beam.examples.WordCount \ -Dexec.args="--project=PROJECT_ID \ --gcpTempLocation=gs://BUCKET_NAME/temp/ \ --output=gs://BUCKET_NAME/output \ --runner=DataflowRunner \ --region=REGION"
Substitua:
PROJECT_ID
: o ID do projeto do CloudBUCKET_NAME
: o nome do bucket do Cloud StorageREGION
: um endpoint regional do Dataflow, comous-central1
Ver os resultados
- No Console do Cloud, acesse a página do Dataflow.
Acessar JobsA página Jobs mostra os detalhes de todos os jobs disponíveis, incluindo o status. O Status do job de wordcount é Em execução primeiro e, em seguida, é atualizado para Concluído.
- No Console do Cloud, acesse a página Navegador do Cloud Storage.
Acessar o navegadorA página Navegador exibe a lista de todos os buckets de armazenamento do projeto.
- Clique no bucket de armazenamento que você criou.
A página Detalhes do bucket mostra os arquivos de saída e os arquivos de preparação que foram criados pelo job do Dataflow.
Limpar
Para evitar cobranças na sua conta do Google Cloud pelos recursos usados nesta página, siga estas etapas.
Exclua o projeto
A maneira mais fácil de eliminar o faturamento é excluir o projeto do Google Cloud que você criou para o guia de início rápido.
- No console do Cloud, acesse a página Gerenciar recursos:
- Na lista de projetos, selecione o projeto que você quer excluir e clique em Excluir .
- Na caixa de diálogo, digite o ID do projeto e clique em Encerrar para excluí-lo.
Excluir recursos individuais
Se você quiser manter o projeto do Google Cloud usado neste guia de início rápido, exclua os recursos individuais:
- No console do Cloud, acesse a página Navegador do Cloud Storage.
- Clique na caixa de seleção do bucket que você quer excluir.
- Para excluir o bucket, clique em Excluir e siga as instruções.
A seguir
- Saiba mais sobre o modelo de programação para o Apache Beam.
- Saiba como projetar, criar e testar o pipeline.
- Trabalhe nos exemplos do WordCount e Mobile Gaming.