Posted on

Este tutorial pretende describir cómo se puede crear una pipeline utilizando Cloud Composer que permita mover datos entre BigQuery y Cloud SQL. Herramientas todas ellas integradas en Google Cloud.

Condiciones previas

Se da por supuesto que existe ya un Cloud Composer levantado y configurado con un worker levantado y todo lo necesario para empezar a cargar y ejecutar DAGs.

Se presume un conocimiento mínimo de las herramientas mencionadas.

Permisos

A su vez es necesario que las diferentes cuentas de servicio que se encargan de los diversos elementos involucrados tengan los permisos correspondientes:

Cuenta de servicio de Cloud Composer:

Con al menos los permisos de:

  • Editor de proyecto
  • Administrador de objetos en los Buckets que se usen para archivos temporales.
  • Administrador de Cloud Sql en el proyecto en el que se encuentre.

Nota: El permiso de Cliente de Cloud Sql es suficiente para ejecutar queries, pero no permite las importaciones mediante la API, es por eso que se usa el de Administrador.

Cuenta de servicio de Cloud SQL:

  • Administrador de objetos en los Buckets que se usen para archivos temporales.
  • Administrador de Cloud Sql

APIs

Deben estar activadas las APIs siguientes:

  • Cloud SQL
  • Cloud SQL Admin API

Instalación local

Por último, para ejecutar el despliegue es necesario tener el Cloud SDK instalado con el Kubectl activo y conectado al entorno de Kubernetes de Composer.

Despliegue de Cloud sql proxy

Las conexiones a Cloud Sql en Cloud Composer siempre deben hacerse a través del Cloud Sql Proxy. Podemos seguir los pasos para realizar el despliegue a través del siguiente enlace: https://github.com/GoogleCloudPlatform/cloudsql-proxy/blob/master/Kubernetes.md

Se realizan dos despliegues. Uno de ellos el pod que contendrá el Cloud Sql Proxy y que contiene la información para hacer la conexión. Y un segundo despliegue que nos proveerá de un servicio que redirigirá el puerto al proxy.

Los archivos .yaml necesarios para realizar el despliegue junto con las credenciales de la cuenta de servicio se encuentran en el siguiente repositorio:

GitHub: Pipeline-Bigquery-CloudSql-using-Cloud-Composer/Deployment

Configuración de la conexión

Una vez en Airflow, podremos crear una conexión que apunte al servicio que tenemos activo de Cloud Sql Proxy.

Para esto, vamos a Admin > Connections > Create

Y rellenamos los campos de la siguiente manera:

Puesta en marcha de los DAGs

Para testar que la conexión está operativa, se han realizado dos DAGs de ejemplo:

El DAG dev_actualizacioncsql.py que es capaz de extraer información a partir de una query en BigQuery y se la añade a una tabla ya existente en Cloud Sql.

La pipeline seguida implica la creación de una tabla temporal (que puede evitarse usando otro método) y un archivo CSV temporal.

La estructura de ejemplo queda así:

El DAG dev_creacioncsql.py que es capaz de extraer información a partir de una query en BigQuery y generar una tabla nueva en CloudSQL.

La pipeline seguida implica la creación de un archivo CSV temporal y hace uso de las variables Xcom para comunicarse entre tareas.

La estructura de ejemplo queda así:

Ambos Dags se pueden revisar en el siguiente repositorio:

GitHub: Pipeline-Bigquery-CloudSql-using-Cloud-Composer/DAGs

Estos dos ejemplos están pensados para servir tan solo de punto de partida y mostrar las posibilidades que nos da el tener esa conexión activa en el Cloud Composer.

RepositorioGitHub: Pipeline Bigquery CloudSql using Cloud Composer

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.