Instrucciones y requisitos de configuración del lab
Protege tu cuenta y tu progreso. Usa siempre una ventana de navegador privada y las credenciales del lab para ejecutarlo.

Migra datos hacia y desde Spanner con Dataflow

Lab 1 hora universal_currency_alt 1 crédito show_chart Introductorio
info Es posible que este lab incorpore herramientas de IA para facilitar tu aprendizaje.
Este contenido aún no está optimizado para dispositivos móviles.
Para obtener la mejor experiencia, visítanos en una computadora de escritorio con un vínculo que te enviaremos por correo electrónico.

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.

  1. En GCP Console, en la barra de herramientas superior derecha, haga clic en el botón Abrir Cloud Shell.

    Ícono de Cloud Shell

  2. Haga clic en Continue (Continuar):

    cloudshell_continue

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:

Terminal de Cloud Shell

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

  1. En la barra de título de la consola de Google Cloud, haz clic en Activar Cloud Shell (ícono de Cloud Shell). Si se te solicita, haz clic en Continuar.

  2. Ejecuta el siguiente comando para configurar el ID del proyecto:

gcloud config set project {{{project_0.project_id|placeholder_project_id}}}
  1. 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
  1. 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}}}
  1. 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
  1. 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
  1. 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.
  2. 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]
  1. 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
  1. 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'
  1. 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'
  1. A continuación, ejecutarás el código con el servicio de Dataflow.

Tarea 2: Ejecuta un trabajo de Dataflow

  1. 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
  1. Navega a Cloud Storage en la consola y verifica que se haya creado el bucket y se haya copiado el archivo.

  2. 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
  1. 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/
  1. 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.

  2. 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'
  1. 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.

Antes de comenzar

  1. Los labs crean un proyecto de Google Cloud y recursos por un tiempo determinado
  2. .
  3. Los labs tienen un límite de tiempo y no tienen la función de pausa. Si finalizas el lab, deberás reiniciarlo desde el principio.
  4. En la parte superior izquierda de la pantalla, haz clic en Comenzar lab para empezar

Usa la navegación privada

  1. Copia el nombre de usuario y la contraseña proporcionados para el lab
  2. Haz clic en Abrir la consola en modo privado

Accede a la consola

  1. Accede con tus credenciales del lab. Si usas otras credenciales, se generarán errores o se incurrirá en cargos.
  2. Acepta las condiciones y omite la página de recursos de recuperación
  3. No hagas clic en Finalizar lab, a menos que lo hayas terminado o quieras reiniciarlo, ya que se borrará tu trabajo y se quitará el proyecto

Este contenido no está disponible en este momento

Te enviaremos una notificación por correo electrónico cuando esté disponible

¡Genial!

Nos comunicaremos contigo por correo electrónico si está disponible

Un lab a la vez

Confirma para finalizar todos los labs existentes y comenzar este

Usa la navegación privada para ejecutar el lab

Usar una ventana de incógnito o de navegación privada es la mejor forma de 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.