arrow_back

Procesamiento ETL en Google Cloud a través de Dataflow y BigQuery (Python)

Unirse Acceder
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

Procesamiento ETL en Google Cloud a través de Dataflow y BigQuery (Python)

Lab 1 hora universal_currency_alt 5 créditos show_chart Intermedio
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

GSP290

Labs de autoaprendizaje de Google Cloud

Descripción general

En este lab, crearás varias canalizaciones de datos que transfieran datos de un conjunto de datos disponible públicamente a BigQuery, utilizando los siguientes servicios de Google Cloud:

  • Cloud Storage
  • Dataflow
  • BigQuery

Crearás tu propia canalización de datos, incluidas las consideraciones de diseño, así como los detalles de implementación, para garantizar que el prototipo cumpla con los requisitos. Asegúrate de abrir los archivos de Python y leer los comentarios cuando se te indique.

Configuración

Antes de hacer clic en el botón Comenzar lab

Lee estas instrucciones. Los labs son cronometrados y no se pueden pausar. El cronómetro, que comienza a funcionar cuando haces clic en Comenzar lab, indica por cuánto tiempo tendrás a tu disposición los recursos de Google Cloud.

Este lab práctico te permitirá realizar las actividades correspondientes en un entorno de nube real, no en uno de simulación o demostración. Para ello, se te proporcionan credenciales temporales nuevas que utilizarás para acceder a Google Cloud durante todo el lab.

Para completar este lab, necesitarás lo siguiente:

  • Acceso a un navegador de Internet estándar (se recomienda el navegador Chrome)
Nota: Usa una ventana de navegador privada o de Incógnito para ejecutar este lab. Así evitarás cualquier conflicto entre tu cuenta personal y la cuenta de estudiante, lo que podría generar cargos adicionales en tu cuenta personal.
  • Tiempo para completar el lab: Recuerda que, una vez que comienzas un lab, no puedes pausarlo.
Nota: Si ya tienes un proyecto o una cuenta personal de Google Cloud, no los uses en este lab para evitar cargos adicionales en tu cuenta.

Cómo iniciar su lab y acceder a la consola de Google Cloud

  1. Haga clic en el botón Comenzar lab. Si debe pagar por el lab, se abrirá una ventana emergente para que seleccione su forma de pago. A la izquierda, se encuentra el panel Detalles del lab que tiene estos elementos:

    • El botón Abrir la consola de Google
    • Tiempo restante
    • Las credenciales temporales que debe usar para el lab
    • Otra información para completar el lab, si es necesaria
  2. Haga clic en Abrir la consola de Google. El lab inicia recursos y abre otra pestaña en la que se muestra la página de acceso.

    Sugerencia: Ordene las pestañas en ventanas separadas, una junto a la otra.

    Nota: Si ve el diálogo Elegir una cuenta, haga clic en Usar otra cuenta.
  3. Si es necesario, copie el nombre de usuario del panel Detalles del lab y péguelo en el cuadro de diálogo Acceder. Haga clic en Siguiente.

  4. Copie la contraseña del panel Detalles del lab y péguela en el cuadro de diálogo de bienvenida. Haga clic en Siguiente.

    Importante: Debe usar las credenciales del panel de la izquierda. No use sus credenciales de Google Cloud Skills Boost. Nota: Usar su propia Cuenta de Google podría generar cargos adicionales.
  5. Haga clic para avanzar por las páginas siguientes:

    • Acepte los términos y condiciones.
    • No agregue opciones de recuperación o autenticación de dos factores (esta es una cuenta temporal).
    • No se registre para obtener pruebas gratuitas.

Después de un momento, se abrirá la consola de Cloud en esta pestaña.

Nota: Para ver el menú con una lista de los productos y servicios de Google Cloud, haga clic en el Menú de navegación que se encuentra en la parte superior izquierda de la pantalla. Ícono del menú de navegación

Activa Cloud Shell

Cloud Shell es una máquina virtual que cuenta con herramientas para desarrolladores. Ofrece un directorio principal persistente de 5 GB y se ejecuta en Google Cloud. Cloud Shell proporciona acceso de línea de comandos a tus recursos de Google Cloud.

  1. Haz clic en Activar Cloud Shell Ícono de Activar Cloud Shell en la parte superior de la consola de Google Cloud.

Cuando te conectes, habrás completado la autenticación, y el proyecto estará configurado con tu PROJECT_ID. El resultado contiene una línea que declara el PROJECT_ID para esta sesión:

Your Cloud Platform project in this session is set to YOUR_PROJECT_ID

gcloud es la herramienta de línea de comandos de Google Cloud. Viene preinstalada en Cloud Shell y es compatible con la función de autocompletado con tabulador.

  1. Puedes solicitar el nombre de la cuenta activa con este comando (opcional):
gcloud auth list
  1. Haz clic en Autorizar.

  2. Ahora, el resultado debería verse de la siguiente manera:

Resultado:

ACTIVE: * ACCOUNT: student-01-xxxxxxxxxxxx@qwiklabs.net To set the active account, run: $ gcloud config set account `ACCOUNT`
  1. Puedes solicitar el ID del proyecto con este comando (opcional):
gcloud config list project

Resultado:

[core] project = <project_ID>

Resultado de ejemplo:

[core] project = qwiklabs-gcp-44776a13dea667a6 Nota: Para obtener toda la documentación de gcloud, consulta la guía con la descripción general de gcloud CLI en Google Cloud.

Tarea 1. Asegúrate de que la API de Dataflow esté habilitada correctamente

Para garantizar el acceso a la API necesaria, reinicia la conexión a la API de Dataflow.

Importante: Incluso si la API ya está habilitada, sigue los pasos del 1 al 4 que se indican más abajo para inhabilitarla y, luego, vuelve a habilitarla para reiniciar la API correctamente.
  1. En la consola de Cloud, ingresa “API de Dataflow” en la barra de búsqueda superior. Haz clic en el resultado de API de Dataflow.

  2. Haz clic en Administrar.

  3. Haz clic en Inhabilitar API.

Si se te solicita confirmar, haz clic en Inhabilitar.

  1. Haz clic en Habilitar.

Cuando se haya habilitado de nuevo la API, se mostrará en la página la opción para inhabilitarla.

Prueba la tarea completada

Haz clic en Revisar mi progreso para verificar la tarea realizada.

Inhabilitar y volver a habilitar la API de Dataflow

Tarea 2: Descarga el código de partida

  1. Ejecuta el siguiente comando en Cloud Shell para obtener ejemplos de Dataflow para Python del GitHub de servicios profesionales de Google Cloud:
gsutil -m cp -R gs://spls/gsp290/dataflow-python-examples .
  1. Ahora, en Cloud Shell, establece una variable igual a tu ID del proyecto:
export PROJECT={{{ project_0.project_id }}} gcloud config set project $PROJECT

Tarea 3: Crea un bucket de Cloud Storage

  • Usa el comando correspondiente en Cloud Shell para crear un nuevo bucket regional en la región dentro de tu proyecto:
gsutil mb -c regional -l {{{ project_0.default_region }}} gs://$PROJECT

Prueba la tarea completada

Haz clic en Revisar mi progreso para verificar la tarea realizada.

Crear un bucket de Cloud Storage

Tarea 4: Copia archivos al bucket

  • Usa el comando gsutil en Cloud Shell para copiar archivos al bucket de Cloud Storage que acabas de crear:
gsutil cp gs://spls/gsp290/data_files/usa_names.csv gs://$PROJECT/data_files/ gsutil cp gs://spls/gsp290/data_files/head_usa_names.csv gs://$PROJECT/data_files/

Prueba la tarea completada

Haz clic en Revisar mi progreso para verificar la tarea realizada.

Copiar archivos al bucket

Tarea 5: Crea el conjunto de datos “lake” de BigQuery

  • En Cloud Shell, crea un conjunto de datos en BigQuery llamado lake. Todas tus tablas se cargarán en BigQuery aquí:
bq mk lake

Prueba la tarea completada

Haz clic en Revisar mi progreso para verificar la tarea realizada.

Crear el conjunto de datos de BigQuery (nombre: lake)

Tarea 6: Crea una canalización de Dataflow

En esta sección, crearás un Dataflow que solo permite anexar y que transferirá datos a la tabla de BigQuery. Puedes usar el Editor de código incorporado que te permitirá ver y editar el código en la consola de Google Cloud.

Diagrama de la canalización de Dataflow que solo permite anexar

Abre el editor de código de Cloud Shell

  1. Haz clic en el ícono Abrir editor para navegar al código fuente en Cloud Shell:

Ícono Abrir editor

  1. Si se te solicita, haz clic en Abrir en una nueva ventana. Se abrirá el editor de código en una ventana nueva. El editor de Cloud Shell te permite editar archivos en el entorno de Cloud Shell. Desde el Editor, puedes hacer clic en Abrir terminal para volver a Cloud Shell.

Tarea 7: Transfiere datos con una canalización de Dataflow

Ahora, crearás una canalización de Dataflow con una fuente de TextIO y un destino de BigQueryIO para transferir datos a BigQuery. Específicamente, la canalización hará lo siguiente:

  • Transferir los archivos desde Cloud Storage
  • Filtrar la fila del encabezado en los archivos
  • Convertir las líneas leídas en objetos del diccionario
  • Enviar las filas a BigQuery

Tarea 8: Revisa el código de Python de la canalización

En el Editor de código, navega a dataflow-python-examples > dataflow_python_examples y abre el archivo data_ingestion.py. Lee los comentarios en el archivo que explican lo que hace el código. Este código propagará el conjunto de datos lake con una tabla en BigQuery.

Editor de código

Tarea 9: Ejecuta la canalización de Apache Beam

  1. Vuelve a tu sesión de Cloud Shell para realizar el siguiente paso. Ahora, configurarás las bibliotecas de Python requeridas.

El trabajo de Dataflow en este lab requerirá Python3.8. Para garantizar que estás utilizando la versión correcta, ejecutarás los procesos de Dataflow en un contenedor de Docker Python 3.8.

  1. Ejecuta lo siguiente en Cloud Shell para iniciar un contenedor de Python:
docker run -it -e PROJECT=$PROJECT -v $(pwd)/dataflow-python-examples:/dataflow python:3.8 /bin/bash

Con este comando, se obtendrá un contenedor de Docker con la versión estable más reciente de Python 3.8 y se ejecutará una shell de comando para ejecutar los siguientes comandos en el contenedor. La marca -v proporciona el código fuente como un volumen para el contenedor, de manera que podamos utilizar el editor de Cloud Shell y, aun así, acceder a él dentro del contenedor en ejecución.

  1. Una vez que el contenedor termine la extracción y comience a ejecutarse en Cloud Shell, ejecuta lo siguiente para instalar apache-beam en ese contenedor en ejecución:
pip install apache-beam[gcp]==2.24.0
  1. Luego, en el contenedor en ejecución en Cloud Shell, cambia al directorio en el que vinculaste el código fuente:
cd dataflow/

Ejecuta la canalización de Dataflow de transferencia en la nube

  1. Lo que se muestra a continuación iniciará los trabajadores requeridos y los cerrará cuando el proceso haya finalizado:
python dataflow_python_examples/data_ingestion.py \ --project=$PROJECT --region={{{ project_0.default_region }}} \ --runner=DataflowRunner \ --machine_type=e2-standard-2 \ --staging_location=gs://$PROJECT/test \ --temp_location gs://$PROJECT/test \ --input gs://$PROJECT/data_files/head_usa_names.csv \ --save_main_session
  1. Vuelve a la consola de Cloud y abre el menú de navegación > Dataflow para ver el estado de tu trabajo.

Menú de navegación > Dataflow

  1. Haz clic en el nombre del trabajo para ver el progreso. Una vez que el Estado del trabajo sea Sin errores, puedes continuar con el siguiente paso. Esta canalización de Dataflow tardará aproximadamente cinco minutos en comenzar, completar el trabajo y, luego, apagarse.

  2. Navega a BigQuery (menú de navegación > BigQuery) para verificar si tus datos se propagaron.

Menú de navegación > BigQuery

  1. Haz clic en el nombre de tu proyecto para ver la tabla usa_names en el conjunto de datos lake.

Tabla usa_names

  1. Haz clic en la tabla y, luego, navega hasta la pestaña Vista previa para ver ejemplos de los datos de usa_names.
Nota: Si no ves la tabla usa_names, actualiza la página o visualiza las tablas en la IU clásica de BigQuery.

Prueba la tarea completada

Haz clic en Revisar mi progreso para verificar la tarea realizada.

Crear una canalización de transferencia de datos de Dataflow

Tarea 10: Transforma los datos

Ahora, crearás una canalización de Dataflow con una fuente de TextIO y un destino de BigQueryIO para transferir datos a BigQuery. En específico, harás lo siguiente:

  • Transferir los archivos desde Cloud Storage
  • Convertir las líneas leídas en objetos del diccionario
  • Transformar los datos que contengan el año a un formato que BigQuery entienda como una fecha
  • Enviar las filas a BigQuery

Revisa el código de Python de la canalización de transformación

En el editor de código, abre el archivo data_transformation.py. Lee los comentarios en el archivo que explican lo que hace el código.

Tarea 11: Ejecuta la canalización de transformación de Dataflow

Ejecutarás la canalización de Dataflow en la nube. Esto iniciará los trabajadores requeridos y los cerrará cuando el proceso haya finalizado:

  1. Para hacerlo, ejecuta los siguientes comandos:
python dataflow_python_examples/data_transformation.py \ --project=$PROJECT \ --region={{{ project_0.default_region }}} \ --runner=DataflowRunner \ --machine_type=e2-standard-2 \ --staging_location=gs://$PROJECT/test \ --temp_location gs://$PROJECT/test \ --input gs://$PROJECT/data_files/head_usa_names.csv \ --save_main_session
  1. Navega al menú de navegación > Dataflow y haz clic en el nombre del trabajo para ver su estado. Esta canalización de Dataflow tardará aproximadamente cinco minutos en comenzar, completar el trabajo y, luego, apagarse.

  2. Una vez que el Estado del trabajo sea Sin errores en la pantalla de estado del trabajo de Dataflow, navega a BigQuery para verificar que se hayan propagado tus datos.

  3. Deberías ver la tabla usa_names_transformed debajo del conjunto de datos lake.

  4. Haz clic en la tabla y navega hasta la pestaña Vista previa para ver ejemplos de los datos de usa_names_transformed.

Nota: Si no ves la tabla usa_names_transformed, actualiza la página o visualiza las tablas por medio de la IU clásica de BigQuery.

Prueba la tarea completada

Haz clic en Revisar mi progreso para verificar la tarea realizada.

Crear una canalización de transformación de datos de Dataflow

Tarea 12: Enriquece los datos

Ahora, crearás una canalización de Dataflow con una fuente de TextIO y un destino de BigQueryIO para transferir datos a BigQuery. En específico, harás lo siguiente:

  • Transferir los archivos desde Cloud Storage
  • Filtrar la fila del encabezado en los archivos
  • Convertir las líneas leídas en objetos del diccionario
  • Enviar las filas a BigQuery

Tarea 13: Revisa el código de Python de la canalización de enriquecimiento de datos

  1. En el Editor de código, abre el archivo data_enrichment.py.

  2. Revisa los comentarios que explican lo que está haciendo el código. Este código propagará los datos en BigQuery.

La línea 83 actualmente se ve así:

values = [x.decode('utf8') for x in csv_row]
  1. Edítala para que se vea así:
values = [x for x in csv_row]
  1. Cuando termines de editar esta línea, recuerda Guardar este archivo actualizado, para ello, selecciona el menú desplegable Archivo del editor y haz clic en Guardar.

Tarea 14: Ejecuta la canalización de Dataflow de enriquecimiento de datos

Aquí ejecutarás la canalización de Dataflow en la nube.

  1. Ejecuta lo siguiente en Cloud Shell para iniciar los trabajadores necesarios y apagarlos cuando se complete la tarea:
python dataflow_python_examples/data_enrichment.py \ --project=$PROJECT \ --region={{{ project_0.default_region }}} \ --runner=DataflowRunner \ --machine_type=e2-standard-2 \ --staging_location=gs://$PROJECT/test \ --temp_location gs://$PROJECT/test \ --input gs://$PROJECT/data_files/head_usa_names.csv \ --save_main_session
  1. Ve al menú de navegación > Dataflow para ver el estado del trabajo. Esta canalización de Dataflow tardará aproximadamente cinco minutos en comenzar, completar el trabajo y, luego, apagarse.

  2. Una vez que el Estado del trabajo sea Sin errores en la pantalla de estado del trabajo de Dataflow, navega a BigQuery para verificar que se hayan propagado tus datos.

Deberías ver la tabla usa_names_enriched debajo del conjunto de datos lake.

  1. Haz clic en la tabla y navega hasta la pestaña Vista previa para ver ejemplos de los datos de usa_names_enriched.
Nota: Si no ves la tabla usa_names_enriched, actualiza la página o visualiza las tablas en la IU clásica de BigQuery.

Prueba la tarea de enriquecimiento de datos completada

Haz clic en Revisar mi progreso para verificar la tarea realizada.

Crear una canalización de enriquecimiento de datos de Dataflow

Tarea 15: Data lake a data mart y revisión del código de Python de la canalización

Ahora, crea una canalización de Dataflow que lee los datos de dos fuentes de datos de BigQuery y, luego, une las fuentes de datos. Específicamente, harás lo siguiente:

  • Transferir archivos desde dos fuentes de BigQuery
  • Unir las dos fuentes de datos
  • Filtrar la fila del encabezado en los archivos
  • Convertir las líneas leídas en objetos del diccionario
  • Enviar las filas a BigQuery

En el Editor de código, abre el archivo data_lake_to_mart.py. Lee los comentarios en el archivo que explican lo que hace el código. Este código unirá dos tablas y propagará los datos resultantes en BigQuery.

Tarea 16: Ejecuta la canalización de Apache Beam para realizar la unión de datos y crear la tabla resultante en BigQuery

Ahora, ejecuta la canalización de Dataflow en la nube.

  1. Ejecuta el siguiente bloque de código en Cloud Shell para iniciar los trabajadores necesarios y apagarlos cuando se complete la tarea:
python dataflow_python_examples/data_lake_to_mart.py \ --worker_disk_type="compute.googleapis.com/projects//zones//diskTypes/pd-ssd" \ --max_num_workers=4 \ --project=$PROJECT \ --runner=DataflowRunner \ --machine_type=e2-standard-2 \ --staging_location=gs://$PROJECT/test \ --temp_location gs://$PROJECT/test \ --save_main_session \ --region={{{ project_0.default_region }}}
  1. Navega al menú de navegación > Dataflow y haz clic en el nombre de este nuevo trabajo para ver el estado. Esta canalización de Dataflow tardará aproximadamente cinco minutos en comenzar, completar el trabajo y, luego, apagarse.

  2. Una vez que el Estado del trabajo sea Sin errores en la pantalla de estado del trabajo de Dataflow, navega a BigQuery para verificar que se hayan propagado tus datos.

Deberías ver la tabla orders_denormalized_sideinput debajo del conjunto de datos lake.

  1. Haz clic en la tabla y navega a la sección Vista previa para ver ejemplos de datos de orders_denormalized_sideinput.
Nota: Si no ves la tabla orders_denormalized_sideinput, actualiza la página o visualiza las tablas en la IU clásica de BigQuery.

Prueba la tarea de UNIÓN completada

Haz clic en Revisar mi progreso para verificar la tarea realizada.

Crear una canalización data lake a data mart de Dataflow

Pon a prueba tus conocimientos

A continuación, se presentan algunas preguntas de opción múltiple para reforzar tus conocimientos de los conceptos de este lab. Trata de responderlas lo mejor posible.

Felicitaciones

Utilizaste archivos de Python para transferir datos a BigQuery mediante Dataflow.

Finaliza la Quest

Este lab de autoaprendizaje forma parte de la Quest Data Engineering. Una Quest es una serie de labs relacionados que forman una ruta de aprendizaje. Si completas esta Quest, obtendrás una insignia como reconocimiento por tu logro. Puedes publicar la insignia y agregar un vínculo a ella en tu currículum en línea o en tus cuentas de redes sociales. Inscríbete en esta Quest y obtén un crédito inmediato de finalización si realizaste este lab. Consulta otras Quests disponibles.

Realiza tu próximo lab

Continúa tu Quest con Predice las compras de visitantes con un modelo de clasificación en BQML o revisa estas sugerencias:

Próximos pasos y más información

Si buscas más información, consulta la siguiente documentación oficial:

Capacitación y certificación de Google Cloud

Recibe la formación que necesitas para aprovechar al máximo las tecnologías de Google Cloud. Nuestras clases incluyen habilidades técnicas y recomendaciones para ayudarte a avanzar rápidamente y a seguir aprendiendo. Para que puedas realizar nuestros cursos cuando más te convenga, ofrecemos distintos tipos de capacitación de nivel básico a avanzado: a pedido, presenciales y virtuales. Las certificaciones te ayudan a validar y demostrar tus habilidades y tu conocimiento técnico respecto a las tecnologías de Google Cloud.

Última actualización del manual: 12 de octubre de 2023

Prueba más reciente del lab: 12 de octubre de 2023

Copyright 2024 Google LLC. All rights reserved. Google y el logotipo de Google son marcas de Google LLC. Los demás nombres de productos y empresas pueden ser marcas de las respectivas empresas a las que estén asociados.