Criar um pipeline do Dataflow usando Java
Neste documento, mostramos como configurar seu projeto do Google Cloud, criar um exemplo de pipeline criado com o SDK do Apache Beam para Java e executar o pipeline de exemplo no serviço do 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 uma introdução ao pipeline WordCount, consulte o vídeo Como usar o WordCount no Apache Beam.
Este tutorial requer o Maven, mas também é possível converter o projeto de exemplo do Maven para o Gradle. Para saber mais, consulte Opcional: converter do Maven para o Gradle.
Para seguir as instruções detalhadas desta tarefa diretamente no console do Google Cloud, clique em Orientação:
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.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Crie ou selecione um projeto do Google Cloud.
-
Crie um projeto do Google Cloud:
gcloud projects create PROJECT_ID
Substitua
PROJECT_ID
por um nome para o projeto do Google Cloud que você está criando. -
Selecione o projeto do Google Cloud que você criou:
gcloud config set project PROJECT_ID
Substitua
PROJECT_ID
pelo nome do projeto do Google Cloud.
-
-
Verifique se a cobrança está ativada para o seu projeto do Google Cloud.
-
Ative as APIs Dataflow, Compute Engine, Cloud Logging, Cloud Storage, Google Cloud Storage JSON, BigQuery, Cloud Pub/Sub, Cloud Datastore, and Cloud Resource Manager:
gcloud services enable dataflow
compute_component logging storage_component storage_api bigquery pubsub datastore.googleapis.com cloudresourcemanager.googleapis.com -
Create local authentication credentials for your user account:
gcloud auth application-default login
-
Atribua os papéis à sua Conta do Google. Execute uma vez o seguinte comando para cada um dos seguintes papéis do IAM:
roles/iam.serviceAccountUser
gcloud projects add-iam-policy-binding PROJECT_ID --member="user:EMAIL_ADDRESS" --role=ROLE
- Substitua
PROJECT_ID
pela ID do seu projeto. - Substitua
EMAIL_ADDRESS
pelo seu endereço de e-mail. - Substitua
ROLE
por cada papel individual.
- Substitua
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Crie ou selecione um projeto do Google Cloud.
-
Crie um projeto do Google Cloud:
gcloud projects create PROJECT_ID
Substitua
PROJECT_ID
por um nome para o projeto do Google Cloud que você está criando. -
Selecione o projeto do Google Cloud que você criou:
gcloud config set project PROJECT_ID
Substitua
PROJECT_ID
pelo nome do projeto do Google Cloud.
-
-
Verifique se a cobrança está ativada para o seu projeto do Google Cloud.
-
Ative as APIs Dataflow, Compute Engine, Cloud Logging, Cloud Storage, Google Cloud Storage JSON, BigQuery, Cloud Pub/Sub, Cloud Datastore, and Cloud Resource Manager:
gcloud services enable dataflow
compute_component logging storage_component storage_api bigquery pubsub datastore.googleapis.com cloudresourcemanager.googleapis.com -
Create local authentication credentials for your user account:
gcloud auth application-default login
-
Atribua os papéis à sua Conta do Google. Execute uma vez o seguinte comando para cada um dos seguintes papéis do IAM:
roles/iam.serviceAccountUser
gcloud projects add-iam-policy-binding PROJECT_ID --member="user:EMAIL_ADDRESS" --role=ROLE
- Substitua
PROJECT_ID
pela ID do seu projeto. - Substitua
EMAIL_ADDRESS
pelo seu endereço de e-mail. - Substitua
ROLE
por cada papel individual.
- Substitua
Conceda papéis à conta de serviço padrão do Compute Engine. Execute uma vez o seguinte comando para cada um dos seguintes papéis do IAM:
roles/dataflow.admin
roles/dataflow.worker
roles/storage.objectAdmin
gcloud projects add-iam-policy-binding PROJECT_ID --member="serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com" --role=SERVICE_ACCOUNT_ROLE
- Substitua
PROJECT_ID
pela ID do seu projeto. - Substitua
PROJECT_NUMBER
pelo número do projeto. Para encontrar o número do projeto, consulte Identificar projetos ou use o comandogcloud projects describe
. - Substitua
SERVICE_ACCOUNT_ROLE
por cada papel individual.
-
Crie um bucket do Cloud Storage e configure-o da seguinte maneira:
-
Defina a classe de armazenamento como
S
(Standard). -
Defina o local de armazenamento como o seguinte:
US
(Estados Unidos). -
Substitua
BUCKET_NAME
por um nome de bucket exclusivo. Não inclua informações confidenciais no nome do bucket já que o namespace dele é global e visível para o público.
gcloud storage buckets create gs://BUCKET_NAME --default-storage-class STANDARD --location US
-
Defina a classe de armazenamento como
- 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.57.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 Google CloudBUCKET_NAME
: o nome do bucket do Cloud StorageREGION
: uma região do Dataflow, comous-central1
Ver os resultados
No console do Google Cloud, acesse a página Jobs do Dataflow.
Acessar o JobsA página Jobs mostra os detalhes de todos os jobs disponíveis, incluindo o status. O wordcount do job de wordcount é wordcount primeiro e, em seguida, é atualizado para wordcount.
No console do Google Cloud, acesse a página Buckets do Cloud Storage.
Acessar bucketsA página Buckets 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, exclua o projeto do Google Cloud com esses recursos.
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 Google 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 Google Cloud, acesse a página Buckets 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.
Revogar os papéis concedidos à conta de serviço padrão do Compute Engine. Execute uma vez o seguinte comando para cada um dos seguintes papéis do IAM:
roles/dataflow.admin
roles/dataflow.worker
roles/storage.objectAdmin
gcloud projects remove-iam-policy-binding PROJECT_ID \ --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \ --role=SERVICE_ACCOUNT_ROLE
-
Opcional: revogue as credenciais de autenticação que você criou e exclua o arquivo de credenciais local:
gcloud auth application-default revoke
-
Opcional: revogar credenciais da CLI gcloud.
gcloud auth revoke
A seguir
- Saiba mais sobre o modelo de programação para o Apache Beam.
- Saiba como usar o Apache Beam para criar pipelines.
- Trabalhe nos exemplos do WordCount e Mobile Gaming.