Crea una pipeline Dataflow utilizzando Java
Questo documento mostra come configurare il tuo Google Cloud progetto, creare una pipeline di esempio creata con l'SDK Apache Beam per Java ed eseguire la pipeline di esempio nel servizio Dataflow. La pipeline legge un file di testo da Cloud Storage, conta il numero di parole univoche nel file e poi scrive di nuovo i conteggi delle parole in Cloud Storage. Per un'introduzione alla pipeline WordCount, guarda il video How to use WordCount in Apache Beam.
Questo tutorial richiede Maven, ma è anche possibile convertire il progetto di esempio da Maven a Gradle. Per saperne di più, consulta (Facoltativo) Converti da Maven a Gradle.
Per seguire le indicazioni dettagliate per questa attività direttamente nella Google Cloud console, fai clic su Procedura guidata:
Prima di iniziare
- Accedi al tuo Google Cloud account. Se non hai mai utilizzato Google Cloud, crea un account per valutare il rendimento dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $di crediti senza costi per l'esecuzione, il test e il deployment dei carichi di lavoro.
-
Installa Google Cloud CLI.
-
Se utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.
-
Per inizializzare gcloud CLI, esegui questo comando:
gcloud init -
Crea o seleziona un Google Cloud progetto.
Ruoli richiesti per selezionare o creare un progetto
- Seleziona un progetto: la selezione di un progetto non richiede un ruolo IAM specifico. Puoi selezionare qualsiasi progetto su cui ti è stato concesso un ruolo.
-
Crea un progetto: per creare un progetto, devi disporre del ruolo Autore progetto
(
roles/resourcemanager.projectCreator), che contiene l'resourcemanager.projects.createautorizzazione. Scopri come concedere i ruoli.
-
Crea un Google Cloud progetto:
gcloud projects create PROJECT_ID
Sostituisci
PROJECT_IDcon un nome per il Google Cloud progetto che stai creando. -
Seleziona il Google Cloud progetto che hai creato:
gcloud config set project PROJECT_ID
Sostituisci
PROJECT_IDcon il nome del Google Cloud progetto.
-
Verifica che la fatturazione sia attivata per il tuo Google Cloud progetto.
Abilita le API Dataflow, Compute Engine, Cloud Logging, Cloud Storage, Google Cloud Storage JSON, BigQuery, Cloud Pub/Sub, Cloud Datastore e Cloud Resource Manager:
Ruoli richiesti per abilitare le API
Per abilitare le API, devi disporre del ruolo IAM Service Usage Admin (
roles/serviceusage.serviceUsageAdmin), che contiene l'serviceusage.services.enableautorizzazione. Scopri come concedere i ruoli.gcloud services enable dataflow
compute_component logging storage_component storage_api bigquery pubsub datastore.googleapis.com cloudresourcemanager.googleapis.com -
Crea le credenziali di autenticazione locali per il tuo account utente:
gcloud auth application-default login
Se viene restituito un errore di autenticazione e utilizzi un provider di identità (IdP) esterno, verifica di aver acceduto a gcloud CLI con la tua identità federata.
-
Concedi i ruoli al tuo account utente. Esegui il seguente comando una volta per ciascuno dei seguenti ruoli IAM:
roles/iam.serviceAccountUsergcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_IDENTIFIER" --role=ROLE
Sostituisci quanto segue:
PROJECT_ID: il tuo ID progetto.USER_IDENTIFIER: l'identificatore del tuo account utente. Ad esempio,myemail@example.com.ROLE: il ruolo IAM che concedi al tuo account utente.
-
Installa Google Cloud CLI.
-
Se utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.
-
Per inizializzare gcloud CLI, esegui questo comando:
gcloud init -
Crea o seleziona un Google Cloud progetto.
Ruoli richiesti per selezionare o creare un progetto
- Seleziona un progetto: la selezione di un progetto non richiede un ruolo IAM specifico. Puoi selezionare qualsiasi progetto su cui ti è stato concesso un ruolo.
-
Crea un progetto: per creare un progetto, devi disporre del ruolo Autore progetto
(
roles/resourcemanager.projectCreator), che contiene l'resourcemanager.projects.createautorizzazione. Scopri come concedere i ruoli.
-
Crea un Google Cloud progetto:
gcloud projects create PROJECT_ID
Sostituisci
PROJECT_IDcon un nome per il Google Cloud progetto che stai creando. -
Seleziona il Google Cloud progetto che hai creato:
gcloud config set project PROJECT_ID
Sostituisci
PROJECT_IDcon il nome del Google Cloud progetto.
-
Verifica che la fatturazione sia attivata per il tuo Google Cloud progetto.
Abilita le API Dataflow, Compute Engine, Cloud Logging, Cloud Storage, Google Cloud Storage JSON, BigQuery, Cloud Pub/Sub, Cloud Datastore e Cloud Resource Manager:
Ruoli richiesti per abilitare le API
Per abilitare le API, devi disporre del ruolo IAM Service Usage Admin (
roles/serviceusage.serviceUsageAdmin), che contiene l'serviceusage.services.enableautorizzazione. Scopri come concedere i ruoli.gcloud services enable dataflow
compute_component logging storage_component storage_api bigquery pubsub datastore.googleapis.com cloudresourcemanager.googleapis.com -
Crea le credenziali di autenticazione locali per il tuo account utente:
gcloud auth application-default login
Se viene restituito un errore di autenticazione e utilizzi un provider di identità (IdP) esterno, verifica di aver acceduto a gcloud CLI con la tua identità federata.
-
Concedi i ruoli al tuo account utente. Esegui il seguente comando una volta per ciascuno dei seguenti ruoli IAM:
roles/iam.serviceAccountUsergcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_IDENTIFIER" --role=ROLE
Sostituisci quanto segue:
PROJECT_ID: il tuo ID progetto.USER_IDENTIFIER: l'identificatore del tuo account utente. Ad esempio,myemail@example.com.ROLE: il ruolo IAM che concedi al tuo account utente.
Concedi i ruoli al account di servizio Compute Engine predefinito. Esegui il seguente comando una volta per ciascuno dei seguenti ruoli 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
- Sostituisci
PROJECT_IDcon l'ID progetto. - Sostituisci
PROJECT_NUMBERcon il numero del progetto. Per trovare il numero del progetto, consulta Identifica i progetti o utilizza il comandogcloud projects describe. - Sostituisci
SERVICE_ACCOUNT_ROLEcon ogni singolo ruolo.
-
Crea un bucket Cloud Storage e configurarlo come segue:
-
Imposta la classe di archiviazione su
S(Standard). -
Imposta la località di archiviazione su:
US(Stati Uniti). -
Sostituisci
BUCKET_NAMEcon un nome bucket univoco. Non includere informazioni sensibili nel nome del bucket, poiché lo spazio dei nomi dei bucket è globale e visibile pubblicamente.
gcloud storage buckets create gs://BUCKET_NAME --default-storage-class STANDARD --location US
-
Imposta la classe di archiviazione su
- Copia quanto segue, in quanto ti servirà in una sezione successiva:
- Il nome del bucket Cloud Storage.
- L'ID progetto. Google Cloud Per trovare questo ID, consulta Identifica i progetti.
- Scarica e installa il
Java Development Kit (JDK) versione 11. (Dataflow continua
a supportare la versione 8.) Verifica che la
JAVA_HOMEvariabile di ambiente sia impostata e punti all'installazione di JDK. - Scarica e installa Apache Maven seguendo la guida all'installazione di Maven per il tuo sistema operativo specifico.
Recupera il codice della pipeline
L' SDK Apache Beam è un modello di programmazione open source per pipeline di trattamento dati. Definisci queste pipeline con un programma Apache Beam e puoi scegliere un runner, come Dataflow, per eseguire la pipeline.
- Nella shell o nel terminale, utilizza il
plug-in Maven Archetype per creare un progetto Maven sul computer che
contenga gli esempi
WordCountdell'SDK Apache Beam:mvn archetype:generate \ -DarchetypeGroupId=org.apache.beam \ -DarchetypeArtifactId=beam-sdks-java-maven-archetypes-examples \ -DarchetypeVersion=2.73.0 \ -DgroupId=org.example \ -DartifactId=word-count-beam \ -Dversion="0.1" \ -Dpackage=org.apache.beam.examples \ -DinteractiveMode=falseIl comando crea una nuova directory denominata
word-count-beamnella directory corrente. La directoryword-count-beamcontiene un semplice filepom.xmle una serie di pipeline di esempio che contano le parole nei file di testo. - Verifica che la directory
word-count-beamcontenga il filepom.xml:Linux o macOS
cd word-count-beam/ ls
L'output è il seguente:
pom.xml src
Windows
cd word-count-beam/ dir
L'output è il seguente:
pom.xml src
- Verifica che il progetto Maven contenga le pipeline di esempio:
Linux o macOS
ls src/main/java/org/apache/beam/examples/
L'output è il seguente:
DebuggingWordCount.java WindowedWordCount.java common MinimalWordCount.java WordCount.java
Windows
dir src/main/java/org/apache/beam/examples/
L'output è il seguente:
DebuggingWordCount.java WindowedWordCount.java common MinimalWordCount.java WordCount.java
Per un'introduzione dettagliata ai concetti di Apache Beam utilizzati in questi esempi, consulta
l'esempio WordCount di Apache Beam. Le istruzioni nelle sezioni successive utilizzano
WordCount.java.
Esegui la pipeline in locale
- Nella shell o nel terminale, esegui la
WordCountpipeline in locale dalla tuaword-count-beamdirectory:mvn compile exec:java \ -Dexec.mainClass=org.apache.beam.examples.WordCount \ -Dexec.args="--output=counts"I file di output hanno il prefisso
countse vengono scritti nellaword-count-beamdirectory. Contengono parole univoche dal testo di input e il numero di occorrenze di ogni parola.
Esegui la pipeline nel servizio Dataflow
- Nella shell o nel terminale, crea ed esegui la
WordCountpipeline nel servizio Dataflow dalla tuaword-count-beamdirectory: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"Sostituisci quanto segue:
PROJECT_ID: il tuo Google Cloud ID progettoBUCKET_NAME: il nome del bucket Cloud StorageREGION: una regione Dataflow, ad esempious-central1
Visualizza i tuoi risultati
Nella Google Cloud console, vai alla pagina Job di Dataflow.
Vai a JobLa pagina Job mostra i dettagli di tutti i job disponibili, incluso lo stato. Lo Stato del job wordcount è inizialmente In esecuzione e poi viene aggiornato a Riuscito.
Nella Google Cloud console, vai alla pagina Bucket di Cloud Storage.
Vai a BucketsLa pagina Bucket mostra l'elenco di tutti i bucket di archiviazione nel tuo progetto.
- Fai clic sul bucket di archiviazione che hai creato.
La pagina Dettagli bucket mostra i file di output e i file di gestione temporanea creati dal job Dataflow.
Libera spazio
Per evitare che al tuo Google Cloud account vengano addebitati costi relativi alle risorse utilizzate in questa pagina, elimina il Google Cloud progetto con le risorse.
Elimina il progetto
Il modo più semplice per eliminare la fatturazione è eliminare il Google Cloud progetto creato per la guida rapida.
- Nella Google Cloud console, vai alla pagina Gestisci risorse.
- Nell'elenco dei progetti, seleziona il progetto che vuoi eliminare, quindi fai clic su Elimina.
- Nella finestra di dialogo, digita l'ID progetto, quindi fai clic su Chiudi per eliminare il progetto.
Elimina le singole risorse
Se vuoi conservare il Google Cloud progetto che hai utilizzato in questa guida rapida, elimina le singole risorse:
- Nella Google Cloud console, vai alla pagina Bucket di Cloud Storage.
- Fai clic sulla casella di controllo del bucket da eliminare.
- Per eliminare il bucket, fai clic su Elimina, quindi segui le istruzioni.
Revoca i ruoli che hai concesso al account di servizio Compute Engine predefinito. Esegui il seguente comando una volta per ciascuno dei seguenti ruoli 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
-
(Facoltativo) Revoca le credenziali di autenticazione che hai creato ed elimina il file di credenziali locale
gcloud auth application-default revoke
-
(Facoltativo) Revoca le credenziali da gcloud CLI.
gcloud auth revoke
Passaggi successivi
- Scopri di più sul modello di programmazione Apache Beam.
- Scopri come utilizzare Apache Beam per creare pipeline.
- Consulta gli esempi WordCount e Mobile Gaming.