Questo tutorial mostra come eseguire il deployment di una pipeline di dati in Dataflow per un un flusso in tempo reale di modifiche al database provenienti dal database di modifiche in tempo reale. L'output della pipeline viene scritto in una serie di file di archiviazione ideale in Cloud Storage.
Viene fornito un set di dati di esempio per un'applicazione di ascolto di musica. In questo di questo tutorial ti permette di tenere traccia dei brani che hai ascoltato e di classificarti tra i primi cinque punto.
Questo tutorial è rivolto agli utenti tecnici che hanno familiarità con la scrittura di codice e il deployment di pipeline di dati in Google Cloud.
Obiettivi
Questo tutorial illustra come svolgere le seguenti operazioni:
- Creare una tabella Bigtable con un flusso di modifiche abilitato.
- Eseguire il deployment di una pipeline su Dataflow che trasforma e restituisce di modifiche in tempo reale.
- Visualizzare i risultati della pipeline di dati.
Costi
In questo documento vengono utilizzati i seguenti componenti fatturabili di Google Cloud:
Per generare una stima dei costi basata sull'utilizzo previsto,
utilizza il Calcolatore prezzi.
Una volta completate le attività descritte in questo documento, puoi evitare la fatturazione continua eliminando le risorse che hai creato. Per ulteriori informazioni, consulta la pagina Pulizia.
Prima di iniziare
- Accedi al tuo account Google Cloud. Se non conosci Google Cloud, crea un account per valutare le prestazioni dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $di crediti gratuiti per l'esecuzione, il test e il deployment dei carichi di lavoro.
- 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.
-
-
Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.
-
Abilita le API Dataflow, Cloud Bigtable API, Cloud Bigtable Admin API, and Cloud Storage.
gcloud services enable dataflow.googleapis.com
bigtable.googleapis.com bigtableadmin.googleapis.com storage.googleapis.com - 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.
-
-
Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.
-
Abilita le API Dataflow, Cloud Bigtable API, Cloud Bigtable Admin API, and Cloud Storage.
gcloud services enable dataflow.googleapis.com
bigtable.googleapis.com bigtableadmin.googleapis.com storage.googleapis.com - Aggiorna e installa il
Interfaccia a riga di comando
cbt
di Google.gcloud components update gcloud components install cbt
prepara l'ambiente
Ottieni il codice
Clonare il repository che contiene il codice campione. Se lo hai già scaricato in precedenza repository ed eseguire il pull per ottenere la versione più recente.
git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git
cd java-docs-samples/bigtable/beam/change-streams
Crea un bucket
gcloud storage buckets create gs://BUCKET_NAMESostituisci
BUCKET_NAME
con un nome di bucket che soddisfi i requisiti di denominazione dei bucket.
crea un'istanza Bigtable
Puoi utilizzare un'istanza esistente per questo tutorial o creare un'istanza con le configurazioni predefinite in una regione vicino a te.
Creare una tabella
L'applicazione di esempio tiene traccia dei brani ascoltati dagli utenti e archivia i di ascolto degli eventi in Bigtable. Crea una tabella con un flusso di modifiche abilitato che ha una famiglia di colonne (cf) e una colonna (brano) e utilizza gli ID utente per le chiavi di riga.
Crea la tabella.
gcloud bigtable instances tables create song-rank \
--column-families=cf --change-stream-retention-period=7d \
--instance=BIGTABLE_INSTANCE_ID --project=PROJECT_ID
Sostituisci quanto segue:
- PROJECT_ID: l'ID del progetto che stai utilizzando
- BIGTABLE_INSTANCE_ID: l'ID dell'istanza che dovrà contenere la nuova tabella
Avvia la pipeline
Questa pipeline trasforma il flusso di modifiche procedendo nel seguente modo:
- Legge il flusso di modifiche
- Ottiene il nome del brano
- Raggruppa gli eventi di ascolto dei brani in finestre di n secondi
- Conta i cinque brani più ascoltati
- Restituisce i risultati
Eseguire la pipeline.
mvn compile exec:java -Dexec.mainClass=SongRank \
"-Dexec.args=--project=PROJECT_ID --bigtableProjectId=PROJECT_ID \
--bigtableInstanceId=BIGTABLE_INSTANCE_ID --bigtableTableId=song-rank \
--outputLocation=gs://BUCKET_NAME/ \
--runner=dataflow --region=BIGTABLE_REGION --experiments=use_runner_v2"
Sostituisci BIGTABLE_REGION con l'ID della regione in cui si trova l'istanza Bigtable, ad esempio us-east5
.
Comprendi la pipeline
I seguenti snippet di codice della pipeline possono aiutarti a comprendere il del codice in esecuzione.
Lettura del flusso di modifiche
Il codice in questo esempio configura lo stream di origine con i parametri per il valore di un'istanza e una tabella Bigtable specifiche.
Recupero del titolo del brano
Quando un brano viene ascoltato, il nome del brano viene scritto nella famiglia di colonne cf
e il qualificatore di colonna song
, in modo che il codice estragga il valore dalla modifica
la mutazione del flusso e la invia al passaggio successivo della pipeline.
Le cinque canzoni più ascoltate
Puoi utilizzare le funzioni Beam integrate Count
e Top.of
per visualizzare le prime cinque
brani nella finestra corrente.
Visualizzazione dei risultati
Questa pipeline scrive i risultati sullo standard e sui file. Per , le scritture vengono suddivise in gruppi di 10 elementi o segmenti di un minuto.
Visualizza la pipeline
Nella console Google Cloud, vai alla pagina Dataflow.
Fai clic sul job con un nome che inizia con ranking del brano.
Nella parte inferiore dello schermo, fai clic su Mostra per aprire il riquadro dei log.
Fai clic su Log worker per monitorare i log di output del flusso di modifiche.
Operazioni di scrittura flussi
Utilizza la
Interfaccia a riga di comando cbt
di scrivere una serie di brani da ascoltare per vari utenti
la tabella song-rank
. È progettata per scrivere nell'arco
di pochi minuti per simulare
ascolta brani in streaming nel tempo.
cbt -instance=BIGTABLE_INSTANCE_ID -project=PROJECT_ID import \
song-rank song-rank-data.csv column-family=cf batch-size=1
Visualizza l'output
Leggi l'output su Cloud Storage per vedere i brani più popolari.
gcloud storage cat gs://BUCKET_NAME/song-charts/GlobalWindow-pane-0-00000-of-00001.txt
Output di esempio:
2023-07-06T19:53:38.232Z [KV{The Wheels on the Bus, 199}, KV{Twinkle, Twinkle, Little Star, 199}, KV{Ode to Joy , 192}, KV{Row, Row, Row Your Boat, 186}, KV{Take Me Out to the Ball Game, 182}]
2023-07-06T19:53:49.536Z [KV{Old MacDonald Had a Farm, 20}, KV{Take Me Out to the Ball Game, 18}, KV{Für Elise, 17}, KV{Ode to Joy , 15}, KV{Mary Had a Little Lamb, 12}]
2023-07-06T19:53:50.425Z [KV{Twinkle, Twinkle, Little Star, 20}, KV{The Wheels on the Bus, 17}, KV{Row, Row, Row Your Boat, 13}, KV{Happy Birthday to You, 12}, KV{Over the Rainbow, 9}]
Esegui la pulizia
Per evitare che al tuo Account Google Cloud vengano addebitati costi relativi alle risorse utilizzate in questo tutorial, elimina il progetto che contiene le risorse oppure mantieni il progetto ed elimina le singole risorse.
Elimina il progetto
Elimina un progetto Google Cloud:
gcloud projects delete PROJECT_ID
Elimina singole risorse
Elimina il bucket e i file.
gcloud storage rm --recursive gs://BUCKET_NAME/
Disabilita il flusso di modifiche nella tabella.
gcloud bigtable instances tables update song-rank --instance=BIGTABLE_INSTANCE_ID \ --clear-change-stream-retention-period
Elimina la tabella
song-rank
.cbt -instance=BIGTABLE_INSTANCE_ID -project=PROJECT_ID deletetable song-rank
Arresta la pipeline di modifiche in tempo reale.
Elenca i job per ottenere l'ID job.
gcloud dataflow jobs list --region=BIGTABLE_REGION
Annulla il job.
gcloud dataflow jobs cancel JOB_ID --region=BIGTABLE_REGION
Sostituisci JOB_ID con l'ID job visualizzato dopo il comando precedente.