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
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Create or select a Google Cloud project.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_ID
with a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_ID
with your Google Cloud project name.
-
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Dataflow, Compute Engine, Cloud Logging, Cloud Storage, Google Cloud Storage JSON, BigQuery, Cloud Pub/Sub, Cloud Datastore, and Cloud Resource Manager APIs:
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
-
Grant roles to your user account. Run the following command once for each of the following IAM roles:
roles/iam.serviceAccountUser
gcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_IDENTIFIER" --role=ROLE
- Replace
PROJECT_ID
with your project ID. -
Replace
USER_IDENTIFIER
with the identifier for your user account. For example,user:myemail@example.com
. - Replace
ROLE
with each individual role.
- Replace
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Create or select a Google Cloud project.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_ID
with a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_ID
with your Google Cloud project name.
-
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Dataflow, Compute Engine, Cloud Logging, Cloud Storage, Google Cloud Storage JSON, BigQuery, Cloud Pub/Sub, Cloud Datastore, and Cloud Resource Manager APIs:
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
-
Grant roles to your user account. Run the following command once for each of the following IAM roles:
roles/iam.serviceAccountUser
gcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_IDENTIFIER" --role=ROLE
- Replace
PROJECT_ID
with your project ID. -
Replace
USER_IDENTIFIER
with the identifier for your user account. For example,user:myemail@example.com
. - Replace
ROLE
with each individual role.
- Replace
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.
-
Create a Cloud Storage bucket and configure it as follows:
-
Set the storage class to
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. - 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.
gcloud storage buckets create gs://BUCKET_NAME --default-storage-class STANDARD --location US
-
Set the storage class to
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.61.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 Status do job de wordcount é Em execução primeiro e, em seguida, é atualizado para Concluído.
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.
Excluir 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.
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
Excluir recursos individuais
Se você quiser manter o projeto do Google Cloud usado neste guia de início rápido, exclua os recursos individuais:
- In the Google Cloud console, go to the Cloud Storage Buckets page.
- Click the checkbox for the bucket that you want to delete.
- To delete the bucket, click Delete, and then follow the instructions.
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
-
Optional: Revoke the authentication credentials that you created, and delete the local credential file.
gcloud auth application-default revoke
-
Optional: Revoke credentials from the gcloud CLI.
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.