Criar um pipeline do Dataflow usando Java
Neste documento, mostramos como configurar seu projeto 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.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
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
If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.
-
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.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
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
If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.
-
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 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.66.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 Google Cloud projetoBUCKET_NAME
: o nome do bucket do Cloud StorageREGION
: uma região do Dataflow, comous-central1
Ver os resultados
No console 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 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 os recursos.
Excluir o projeto
A maneira mais fácil de eliminar o faturamento é excluir o projeto 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 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.