Crea una pipeline Dataflow utilizzando Java
Questo documento mostra come configurare il tuo progetto Google Cloud , creare una pipeline di esempio creata con l'SDK Apache Beam per Java ed eseguire la pipeline di esempio sul servizio Dataflow. La pipeline legge un file di testo da Cloud Storage, conta il numero di parole uniche nel file e scrive i conteggi delle parole in Cloud Storage. Per un'introduzione alla pipeline WordCount, guarda il video Come utilizzare 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.
Prima di iniziare
-
Installa Google Cloud CLI.
-
Configura gcloud CLI per utilizzare la tua identità federata.
Per saperne di più, consulta Accedi a gcloud CLI con la tua identità federata.
-
Per inizializzare gcloud CLI, esegui questo comando:
gcloud init -
Crea o seleziona un progetto Google Cloud .
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 per 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'autorizzazioneresourcemanager.projects.create. Scopri come concedere i ruoli.
-
Crea un progetto Google Cloud :
gcloud projects create PROJECT_ID
Sostituisci
PROJECT_IDcon un nome per il progetto Google Cloud che stai creando. -
Seleziona il progetto Google Cloud che hai creato:
gcloud config set project PROJECT_ID
Sostituisci
PROJECT_IDcon il nome del progetto Google Cloud .
-
Verifica che la fatturazione sia attivata per il tuo progetto Google Cloud .
Abilita le API Dataflow, Compute Engine, Cloud Logging, Cloud Storage, Google Cloud Storage JSON, BigQuery, Cloud Pub/Sub, Cloud Datastore e Cloud Resource Manager, se non sono già abilitate:
Ruoli richiesti per abilitare le API
Per abilitare le API, devi disporre dell'autorizzazione
serviceusage.services.enable. Se hai creato il progetto, probabilmente hai già questa autorizzazione tramite il ruolo Proprietario (roles/owner). In caso contrario, puoi ottenere questa autorizzazione tramite il ruolo Amministratore di Service Usage (roles/serviceusage.serviceUsageAdmin). 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 credenziali di autenticazione locali per il tuo account utente:
gcloud auth application-default login
Se viene restituito un errore di autenticazione, verifica di aver eseguito l'accesso 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 . Per esempi, consulta Rappresenta gli utenti del pool di forza lavoro nelle policy IAM.ROLE: il ruolo IAM che concedi al tuo account utente.
Concedi i ruoli al account di servizio predefinito di Compute Engine. 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@" --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 configuralo come segue:
-
Imposta la classe di archiviazione su
S(Standard). -
Imposta la località di archiviazione su:
US(Stati Uniti). -
Sostituisci
BUCKET_NAMEcon un nome di 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 i seguenti elementi, poiché ti serviranno in una sezione successiva:
- Il nome del tuo bucket Cloud Storage.
- L'ID progetto Google Cloud . Per trovare questo ID, consulta Identificazione dei progetti.
- Scarica e installa Java Development Kit (JDK) versione 11. Verifica che la variabile di ambiente
JAVA_HOMEsia impostata e punti all'installazione del JDK. - Scarica e installa Apache Maven seguendo la guida all'installazione di Maven per il tuo sistema operativo specifico.
Ottieni il codice della pipeline
L'SDK Apache Beam è un modello di programmazione open source per pipeline di trattamento dati. Puoi definire queste pipeline con un programma Apache Beam e scegliere un runner, ad esempio Dataflow, per eseguire la pipeline.
- Nella shell o nel terminale, utilizza il plug-in Maven Archetype per creare un progetto Maven sul tuo 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.77.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 pipeline
WordCountlocalmente dalla directoryword-count-beam: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 nella directoryword-count-beam. Contengono parole univoche del testo di input e il numero di occorrenze di ogni parola.
Esegui la pipeline sul servizio Dataflow
- Nella shell o nel terminale, crea ed esegui la pipeline
WordCountsul servizio Dataflow dalla directoryword-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"Sostituisci quanto segue:
PROJECT_ID: il tuo ID progetto Google CloudBUCKET_NAME: il nome del bucket Cloud StorageREGION: una regione Dataflow, ad esempious-central1
Visualizza i tuoi risultati
Nella console Google Cloud , vai alla pagina Job di Dataflow.
Vai a JobLa pagina Job mostra i dettagli di tutti i job disponibili, incluso lo stato. Inizialmente, lo stato del job wordcount è In esecuzione, quindi viene aggiornato a Riuscito.
Nella console Google Cloud , vai alla pagina Bucket in Cloud Storage.
Vai a BucketLa 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 di gestione temporanea creati dal job Dataflow.
Esegui la pulizia
Per evitare che al tuo account Google Cloud vengano addebitati costi relativi alle risorse utilizzate in questa pagina, elimina il progetto Google Cloud con le risorse.
Elimina il progetto
Il modo più semplice per eliminare la fatturazione è eliminare il progetto Google Cloud creato per la guida rapida.
- Nella console Google Cloud , 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 progetto Google Cloud che hai utilizzato in questa guida rapida, elimina le singole risorse:
- Nella console Google Cloud , vai alla pagina Bucket in Cloud Storage.
- Fai clic sulla casella di controllo del bucket che vuoi eliminare.
- Per eliminare il bucket, fai clic su Elimina, quindi segui le istruzioni.
Revoca i ruoli che hai concesso al account di servizio predefinito di Compute Engine. 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@ \ --role=SERVICE_ACCOUNT_ROLE
-
(Facoltativo) Revoca le credenziali di autenticazione che hai creato ed elimina il file delle credenziali locali.
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.
- Esamina gli esempi di WordCount e gioco mobile.