Crie um pipeline do Dataflow com Java
Este documento mostra como configurar o seu projeto da Google Cloud Platform, criar um pipeline de exemplo criado com o SDK do Apache Beam para Java e executar o pipeline de exemplo no serviço Dataflow. O pipeline lê um ficheiro de texto do Cloud Storage, conta o número de palavras únicas no ficheiro e, em seguida, escreve as contagens de palavras de volta para o 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: converta de Maven para Gradle.
Para seguir orientações passo a passo para esta tarefa diretamente na Google Cloud consola, clique em Orientar-me:
Antes de começar
- Sign in to your Google Cloud Platform 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.
-
Se estiver a usar um fornecedor de identidade (IdP) externo, tem primeiro de iniciar sessão na CLI gcloud com a sua identidade federada.
-
Para inicializar a CLI gcloud, execute o seguinte comando:
gcloud init -
Create or select a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_IDwith 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_IDwith your Google Cloud project name.
-
Verify 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:
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.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.serviceAccountUsergcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_IDENTIFIER" --role=ROLE
Replace the following:
PROJECT_ID: Your project ID.USER_IDENTIFIER: The identifier for your user account. For example,myemail@example.com.ROLE: The IAM role that you grant to your user account.
-
Install the Google Cloud CLI.
-
Se estiver a usar um fornecedor de identidade (IdP) externo, tem primeiro de iniciar sessão na CLI gcloud com a sua identidade federada.
-
Para inicializar a CLI gcloud, execute o seguinte comando:
gcloud init -
Create or select a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_IDwith 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_IDwith your Google Cloud project name.
-
Verify 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:
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.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.serviceAccountUsergcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_IDENTIFIER" --role=ROLE
Replace the following:
PROJECT_ID: Your project ID.USER_IDENTIFIER: The identifier for your user account. For example,myemail@example.com.ROLE: The IAM role that you grant to your user account.
Conceda funções à conta de serviço predefinida do Compute Engine. Execute o seguinte comando uma vez para cada uma das seguintes funções do IAM:
roles/dataflow.adminroles/dataflow.workerroles/storage.objectAdmin
gcloud projects add-iam-policy-binding PROJECT_ID --member="serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com" --role=SERVICE_ACCOUNT_ROLE
- Substitua
PROJECT_IDpelo ID do seu projeto. - Substitua
PROJECT_NUMBERpelo número do seu projeto. Para encontrar o número do projeto, consulte o artigo Identificar projetos ou use o comandogcloud projects describe. - Substitua
SERVICE_ACCOUNT_ROLEpor cada função individual.
-
Create a Cloud Storage bucket and configure it as follows:
-
Set the storage class to
S(Padrão). -
Defina a localização do armazenamento para o seguinte:
US(Estados Unidos). -
Substitua
BUCKET_NAMEpor um nome de contentor exclusivo. Não inclua informações confidenciais no nome do contentor, uma vez que o espaço de nomes do contentor é global e visível publicamente. - Copie o seguinte, uma vez que vai precisar destas informações numa secção posterior:
- O nome do seu contentor do Cloud Storage.
- O seu Google Cloud ID do projeto. Para encontrar este ID, consulte o artigo Identificar projetos.
- Transfira e instale a versão 11 do
Java Development Kit (JDK). (O Dataflow continua a suportar a versão 8.) Verifique se a variável de ambiente
JAVA_HOMEestá definida e aponta para a instalação do JDK. - Transfira e instale o Apache Maven, seguindo o guia de instalação do Maven para o seu sistema operativo específico.
- Na shell ou no terminal, use o
Maven Archetype Plugin para criar um projeto Maven no seu computador que
contenha os exemplos do
WordCountSDK do Apache Beam:mvn archetype:generate \ -DarchetypeGroupId=org.apache.beam \ -DarchetypeArtifactId=beam-sdks-java-maven-archetypes-examples \ -DarchetypeVersion=2.69.0 \ -DgroupId=org.example \ -DartifactId=word-count-beam \ -Dversion="0.1" \ -Dpackage=org.apache.beam.examples \ -DinteractiveMode=falseO comando cria um novo diretório denominado
word-count-beamno seu diretório atual. O diretórioword-count-beamcontém um ficheiropom.xmlsimples e uma série de pipelines de exemplo que contam palavras em ficheiros de texto. - Verifique se o diretório
word-count-beamcontém o ficheiropom.xml:Linux ou macOS
cd word-count-beam/ ls
O resultado é o seguinte:
pom.xml src
Windows
cd word-count-beam/ dir
O resultado é o seguinte:
pom.xml src
- Verifique se o seu projeto Maven contém os pipelines de exemplo:
Linux ou macOS
ls src/main/java/org/apache/beam/examples/
O resultado é o seguinte:
DebuggingWordCount.java WindowedWordCount.java common MinimalWordCount.java WordCount.java
Windows
dir src/main/java/org/apache/beam/examples/
O resultado é o seguinte:
DebuggingWordCount.java WindowedWordCount.java common MinimalWordCount.java WordCount.java
- Na shell ou no terminal, execute o pipeline
WordCountlocalmente a partir do diretórioword-count-beam:mvn compile exec:java \ -Dexec.mainClass=org.apache.beam.examples.WordCount \ -Dexec.args="--output=counts"Os ficheiros de saída têm o prefixo
countse são escritos no diretórioword-count-beam. Contêm palavras únicas do texto introduzido e o número de ocorrências de cada palavra. - Na shell ou no terminal, crie e execute o pipeline
WordCountno serviço 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 o seguinte:
PROJECT_ID: o ID do seu Google Cloud projetoBUCKET_NAME: o nome do seu contentor do Cloud StorageREGION: uma região do Dataflow, comous-central1
Na Google Cloud consola, aceda à página Tarefas do Dataflow.
Aceder a EmpregosA página Trabalhos mostra os detalhes de todos os trabalhos disponíveis, incluindo o estado. O estado da tarefa wordcount é Running (Em execução) no início e, em seguida, é atualizado para Succeeded (Concluído).
Na Google Cloud consola, aceda à página Recipientes do Cloud Storage.
Aceda a RecipientesA página Contentores apresenta a lista de todos os contentores de armazenamento no seu projeto.
- Clique no contentor de armazenamento que criou.
A página Detalhes do contentor mostra os ficheiros de saída e os ficheiros de preparação criados pela sua tarefa do Dataflow.
-
Elimine o contentor:
gcloud storage buckets delete BUCKET_NAME
Revogue as funções que concedeu à conta de serviço predefinida do Compute Engine. Execute o seguinte comando uma vez para cada uma das seguintes funções do IAM:
roles/dataflow.adminroles/dataflow.workerroles/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
- Saiba mais sobre o modelo de programação do Apache Beam.
- Saiba como usar o Apache Beam para criar pipelines.
- Trabalhe nos exemplos WordCount e jogos para dispositivos móveis.
gcloud storage buckets create gs://BUCKET_NAME --default-storage-class STANDARD --location US
Obtenha o código do pipeline
O SDK Apache Beam é um modelo de programação de código aberto para pipelines de processamento de dados. Pode definir estes pipelines com um programa Apache Beam e escolher um executor, como o Dataflow, para executar o pipeline.
Para uma introdução detalhada aos conceitos do Apache Beam usados nestes exemplos, consulte o exemplo WordCount do Apache Beam. As instruções nas secções seguintes usam
WordCount.java.Execute o pipeline localmente
Execute o pipeline no serviço Dataflow
Veja os resultados
Limpar
Para evitar incorrer em custos na sua Google Cloud conta pelos recursos usados nesta página, elimine o Google Cloud projeto com os recursos.
Elimine o projeto
A forma mais fácil de eliminar a faturação é eliminar o Google Cloud projeto que criou para o início rápido.
Delete a Google Cloud project:
gcloud projects delete PROJECT_ID
Elimine os recursos individuais
Se quiser manter o projeto Google Cloud que usou neste início rápido, elimine os recursos individuais:
O que se segue?
-
Set the storage class to