Conectar a Apache Superset con MySQL

Conectar a Apache Superset con MySQL

Este procedimiento para conectar a Apache Superset con MySQL solo aplica cuando tenemos a Superset como contenedor docker.

Ya habíamos realizado el despliegue de un ambiente de pruebas de Apache Superset en el artículo anterior

Alternativa a Power Bi en Linux Ubuntu

Si estamos en este punto es por que necesitamos graficar datos almacenados en MySQL, y ya tenemos acceso a Apache Superset.

Debido a que Apache Superset no viene con conexión a MySQL de forma predeterminada, debemos ejecutar estos pasos para crear la conexión.

1- Instalamos pymysql dentro del contenedor

sudo docker exec -it --user root superset pip install pymysql --target /app/.venv/lib/python3.10/site-packages

2- Reiniciamos el contenedor

sudo docker restart superset

3- Como Apache Superset utiliza una librería llamada SQLAlchemy para hablar con las bases de datos, tenemos dos formas principales para comunicarnos con MySQL:

MySQL-Python (MySQLdb)

PyMySQL: Es una versión moderna escrita 100% en Python

El problema es que hay partes internas de Superset (especialmente al generar metadatos para gráficos) que están programadas para buscar específicamente el módulo llamado MySQLdb. Al no encontrarlo, la generación de gráficos puede lanzarnos errores. Así que ejecutamos el siguiente comando para solucionarlo

sudo docker exec -it --user root superset sh -c "echo 'import pymysql; pymysql.install_as_MySQLdb()' > /app/pythonpath/superset_config.py"

Entonces el anterior comando nos dice algo como ‘Cuando alguien pida MySQLdb, dale PyMySQL‘. A eso se le llama Monkey Patching. Volvemos a reiniciar el contenedor, y listo, ya estamos habilitados para crear datasets y graficos. Siguiendo estos pasos establecemos la conexión con MySQL.

Conectar a Apache Superset con MySQL

El URI debe tener esta estrcutura:

mysql+pymysql://usuario_mysql:contraseña@servidor_mysql/base_de_datos

Recuerda que si la base de datos MySQL se encuentra en otra máquina, debe estar configurada para acepte conexiones desde otro host. Y listo, ya tenemos la conexión a MySQL.

Comparte esto en
Publicado en GNU Linux.

Deja una respuesta

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