Introducció a Cloud Dataflow
Cloud Dataflow és un servei de processament de dades completament gestionat que permet l'execució de pipelines de dades en temps real i per lots. Utilitza el model de programació Apache Beam, que permet definir pipelines de dades de manera unificada per a diferents entorns d'execució.
Objectius d'aquest tema:
- Comprendre què és Cloud Dataflow i les seves aplicacions.
- Aprendre a crear i executar pipelines de dades amb Apache Beam.
- Conèixer les millors pràctiques per optimitzar el rendiment de les pipelines.
Què és Cloud Dataflow?
Cloud Dataflow és una eina poderosa per al processament de dades que ofereix:
- Processament en temps real i per lots: Permet processar dades en temps real (streaming) i per lots (batch) amb la mateixa API.
- Escalabilitat automàtica: S'adapta automàticament a la càrrega de treball, escalant cap amunt o cap avall segons sigui necessari.
- Integració amb altres serveis de GCP: Es pot integrar fàcilment amb altres serveis com BigQuery, Cloud Storage, Pub/Sub, entre d'altres.
Components clau de Cloud Dataflow
- Pipelines: Seqüències de transformacions que processen les dades d'entrada i produeixen dades de sortida.
- PCollections: Col·leccions de dades que flueixen a través de les pipelines.
- Transformacions: Operacions aplicades a les PCollections per transformar les dades.
- Runners: Entorns d'execució que processen les pipelines. Cloud Dataflow és un dels runners disponibles per a Apache Beam.
Exemple pràctic: Creació d'una pipeline bàsica
A continuació, es mostra un exemple de com crear una pipeline bàsica amb Apache Beam i executar-la a Cloud Dataflow.
Pas 1: Configuració del projecte
Abans de començar, assegura't de tenir un projecte de GCP configurat i el SDK de Google Cloud instal·lat.
Pas 2: Instal·lació de les dependències
Instal·la Apache Beam i el connector de Google Cloud Dataflow:
Pas 3: Creació de la pipeline
Crea un fitxer Python (per exemple, dataflow_pipeline.py
) amb el següent codi:
import apache_beam as beam from apache_beam.options.pipeline_options import PipelineOptions, GoogleCloudOptions # Configuració de les opcions de la pipeline options = PipelineOptions() google_cloud_options = options.view_as(GoogleCloudOptions) google_cloud_options.project = 'el-teu-projecte-gcp' google_cloud_options.job_name = 'exemple-pipeline' google_cloud_options.temp_location = 'gs://el-teu-bucket/temp' google_cloud_options.staging_location = 'gs://el-teu-bucket/staging' options.view_as(PipelineOptions).runner = 'DataflowRunner' # Definició de la pipeline with beam.Pipeline(options=options) as p: (p | 'Llegir missatges' >> beam.io.ReadFromText('gs://el-teu-bucket/input.txt') | 'Transformar a majúscules' >> beam.Map(lambda x: x.upper()) | 'Escriure resultats' >> beam.io.WriteToText('gs://el-teu-bucket/output.txt'))
Pas 4: Executar la pipeline
Executa la pipeline amb el següent comandament:
Millors pràctiques per a Cloud Dataflow
- Utilitza les transformacions combinades: Per reduir la quantitat de dades transferides entre nodes.
- Optimitza l'ús de memòria: Utilitza transformacions que minimitzin l'ús de memòria, especialment per a grans volums de dades.
- Monitoritza i depura: Utilitza les eines de monitorització de Cloud Dataflow per identificar i solucionar problemes de rendiment.
Exercici pràctic
Objectiu:
Crear una pipeline que llegeixi dades d'un fitxer CSV, filtri les files amb un valor específic i escrigui els resultats a un altre fitxer CSV.
Instruccions:
- Crea un fitxer CSV d'exemple amb dades.
- Escriu una pipeline que llegeixi el fitxer, filtri les files i escrigui els resultats.
- Executa la pipeline a Cloud Dataflow.
Solució:
import apache_beam as beam from apache_beam.options.pipeline_options import PipelineOptions, GoogleCloudOptions # Configuració de les opcions de la pipeline options = PipelineOptions() google_cloud_options = options.view_as(GoogleCloudOptions) google_cloud_options.project = 'el-teu-projecte-gcp' google_cloud_options.job_name = 'filtrar-csv-pipeline' google_cloud_options.temp_location = 'gs://el-teu-bucket/temp' google_cloud_options.staging_location = 'gs://el-teu-bucket/staging' options.view_as(PipelineOptions).runner = 'DataflowRunner' # Funció per filtrar les files def filtrar_files(row): return 'valor_especific' in row # Definició de la pipeline with beam.Pipeline(options=options) as p: (p | 'Llegir CSV' >> beam.io.ReadFromText('gs://el-teu-bucket/input.csv') | 'Filtrar files' >> beam.Filter(filtrar_files) | 'Escriure CSV' >> beam.io.WriteToText('gs://el-teu-bucket/output.csv'))
Conclusió
En aquest tema, hem après què és Cloud Dataflow, com crear i executar pipelines de dades amb Apache Beam, i algunes millors pràctiques per optimitzar el rendiment. Cloud Dataflow és una eina poderosa per al processament de dades en temps real i per lots, i la seva integració amb altres serveis de GCP el fa molt versàtil per a diferents casos d'ús.
Curs de Google Cloud Platform (GCP)
Mòdul 1: Introducció a Google Cloud Platform
- Què és Google Cloud Platform?
- Configurar el teu compte de GCP
- Visió general de la consola de GCP
- Comprendre projectes i facturació
Mòdul 2: Serveis bàsics de GCP
Mòdul 3: Xarxes i seguretat
Mòdul 4: Dades i analítica
Mòdul 5: Aprenentatge automàtic i IA
Mòdul 6: DevOps i monitoratge
- Cloud Build
- Repositoris de codi font al núvol
- Funcions al núvol
- Monitoratge de Stackdriver
- Gestor de desplegament al núvol
Mòdul 7: Temes avançats de GCP
- Híbrid i multi-núvol amb Anthos
- Computació sense servidor amb Cloud Run
- Xarxes avançades
- Millors pràctiques de seguretat
- Gestió i optimització de costos