SCBL008
Descripción general
En este lab, usarás Dataflow y Apache Beam para migrar datos a Spanner.
Objetivos
En este lab, aprenderás a realizar las siguientes tareas:
- Escribir canalizaciones de ETL con Apache Beam
- Ejecutar canalizaciones de Apache Beam con Google Cloud Dataflow
Configuración y requisitos
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.
En este lab práctico, se te proporcionarán credenciales temporales nuevas para acceder a Google Cloud y realizar las actividades en un entorno de nube real, no en uno de simulación o demostración.
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 el 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.
Active Google Cloud Shell
Google Cloud Shell es una máquina virtual que cuenta con herramientas de desarrollo. Ofrece un directorio principal persistente de 5 GB y se ejecuta en Google Cloud.
Google Cloud Shell proporciona acceso de línea de comandos a sus recursos de GCP.
-
En GCP Console, en la barra de herramientas superior derecha, haga clic en el botón Abrir Cloud Shell.

-
Haga clic en Continue (Continuar):

Toma unos minutos aprovisionar y conectarse con el entorno. Cuando está conectado, ya está autenticado y el proyecto está configurado en su PROJECT_ID . Por ejemplo:

gcloud es la herramienta de línea de comandos para Google Cloud Platform. Viene preinstalada en Cloud Shell y es compatible con la función “tab-completion”.
Puede mostrar el nombre de la cuenta activa con este comando:
gcloud auth list
Resultado:
ACTIVE: *
ACCOUNT: student-01-xxxxxxxxxxxx@qwiklabs.net
To set the active account, run:
$ gcloud config set account `ACCOUNT`
Puede mostrar el ID del proyecto con este comando:
gcloud config list project
Resultado:
[core]
project = <project_ID>
Resultado de ejemplo:
[core]
project = qwiklabs-gcp-44776a13dea667a6
Tarea 1: Crea una canalización de Apache Beam para importar datos a Spanner
-
En la barra de título de la consola de Google Cloud, haz clic en Activar Cloud Shell (
). Si se te solicita, haz clic en Continuar.
-
Ejecuta el siguiente comando para configurar el ID del proyecto:
gcloud config set project {{{project_0.project_id|placeholder_project_id}}}
- Ejecuta los siguientes comandos para descargar los archivos que necesitaremos para el lab:
git clone https://github.com/GoogleCloudPlatform/training-data-analyst
cd training-data-analyst/courses/understanding_spanner/dataflow
- Ejecuta la siguiente secuencia de comandos para crear una base de datos de Spanner.
bash ./create-spanner-pets-database.sh {{{project_0.default_region|placeholder_region}}}
- Ejecuta el siguiente comando para ver el esquema. En este lab, solo hay una tabla y los campos PetID y OwnerID son números enteros en vez de cadenas.
cat pets-db-schema.sql
- Ejecuta el siguiente comando para ver los datos que importaste. Observa que las claves primarias y externas usan contadores. Como aprendiste antes en el curso, este es un patrón que no se recomienda cuando se usa Spanner.
Para resolverlo, usa una canalización de Dataflow escrita en Apache Beam para invertir los bits de los números enteros antes de importar los datos en Spanner.
Así se resuelve el problema de los números enteros sin alterar las relaciones.
cat pets.csv
-
Haz clic en el botón Abrir editor y abre el archivo de código training-data-analyst/courses/understanding_spanner/dataflow/csv-to-spanner.py. Observa que la canalización se crea en la función principal (líneas 53 a 68).
La canalización lee el archivo CSV y, luego, invierte los bits en los campos PetID y OwnerID antes de escribir los datos en Spanner.
La función reverse_bits comienza en la línea 21.
-
Regresa a la terminal. Intentemos ejecutar esta canalización. Primero, debes instalar los prerrequisitos de Python con los siguientes comandos.
pip install apache-beam[gcp]==2.42.0
pip install apache-beam[dataframe]
- Ejecuta la canalización (este código ejecuta la canalización de forma local en Cloud Shell, así que no es necesario navegar a Dataflow).
python csv-to-spanner.py
- Cuando se complete la canalización, ejecuta la siguiente consulta para ver los resultados:
gcloud spanner databases execute-sql pets-db --instance=test-spanner-instance --sql='SELECT * FROM Pets'
- Ejecuta el siguiente comando para quitar los datos que acabas de agregar:
gcloud spanner databases execute-sql pets-db --instance=test-spanner-instance --sql='DELETE FROM Pets WHERE True'
- A continuación, ejecutarás el código con el servicio de Dataflow.
Tarea 2: Ejecuta un trabajo de Dataflow
- Para ejecutar el trabajo con Dataflow, necesitas un bucket de Cloud Storage para las entradas, la etapa de pruebas y los resultados. Usa el siguiente comando para crear un bucket que contenga tu ID del proyecto (este paso debería garantizar que se le asigne un nombre único al bucket). Además, copia el archivo
pets.csv en el bucket. Ejecuta cada uno de ellos de forma individual, no en conjunto.
gsutil mb -l {{{project_0.default_region|place_holder_text}}} gs://$DEVSHELL_PROJECT_ID-data-flow
gsutil cp ./pets.csv gs://$DEVSHELL_PROJECT_ID-data-flow
-
Navega a Cloud Storage en la consola y verifica que se haya creado el bucket y se haya copiado el archivo.
-
Ejecuta los siguientes comandos para asegurarte de que la API de Dataflow esté habilitada correctamente en tu proyecto.
gcloud services disable dataflow.googleapis.com
gcloud services enable dataflow.googleapis.com
- Ejecuta la canalización con Dataflow con el siguiente comando.
python csv-to-spanner.py \
--region {{{project_0.default_region|place_holder_text}}} \
--worker_machine_type e2-standard-2 \
--input gs://$DEVSHELL_PROJECT_ID-data-flow/pets.csv \
--output gs://$DEVSHELL_PROJECT_ID-data-flow/results/outputs \
--runner DataflowRunner \
--project $DEVSHELL_PROJECT_ID \
--temp_location gs://$DEVSHELL_PROJECT_ID-data-flow/tmp/
-
Usa el menú de navegación para ir a Trabajos de Dataflow. Es posible que debas esperar unos minutos para ver el trabajo, así que haz clic en el botón Actualizar hasta que lo veas. Luego, puedes hacer clic en el trabajo y ver sus detalles. El trabajo tarda varios minutos en ejecutarse en el servicio de Dataflow, ya que crea un clúster o una o más VMs para enviar el trabajo.
-
Como hiciste antes, verifica que los datos se hayan agregado a tu base de datos de Spanner. Ejecuta la siguiente consulta para ver los datos que se cargaron:
gcloud spanner databases execute-sql pets-db --instance=test-spanner-instance --sql='SELECT * FROM Pets'
- Borra la instancia de Spanner para que se te deje de cobrar por ella.
¡Felicitaciones! Usaste Dataflow y Apache Beam para migrar datos a Spanner.
Finalice su lab
Cuando haya completado su lab, haga clic en End Lab. Qwiklabs quitará los recursos que usó y limpiará la cuenta por usted.
Tendrá la oportunidad de calificar su experiencia en el lab. Seleccione la cantidad de estrellas que corresponda, ingrese un comentario y haga clic en Submit.
La cantidad de estrellas indica lo siguiente:
- 1 estrella = Muy insatisfecho
- 2 estrellas = Insatisfecho
- 3 estrellas = Neutral
- 4 estrellas = Satisfecho
- 5 estrellas = Muy satisfecho
Puede cerrar el cuadro de diálogo si no desea proporcionar comentarios.
Para enviar comentarios, sugerencias o correcciones, use la pestaña Support.
Copyright 2020 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.