DataHub es un catálogo de datos open source muy popular y una de sus funciones destacadas es la gestión de lineage o linaje de datos. Es frecuente que en entornos de ingestión y procesamiento se use Airflow, una plataforma open source para desarrollar y ejecutar flujos de trabajo. La integración de DataHub con Airflow permite extraer lineage de forma automática, pero requiere que la conexión de Airflow a DataHub esté correctamente configurada.
Un error habitual al usar el plugin de DataHub para Airflow es el mensaje Unable to emit metadata to DataHub GMS. Este error suele venir acompañado de un 404 Client Error Not Found para una URL que no contiene la ruta API correcta, indicando que la URL usada por Airflow es incorrecta.
TLDR: Hay que URL-encodear la parte host de la cadena de conexión de Airflow para que incluya el path de la API dentro del host. Ejemplo correcto: datahub-rest://my-datahub-host.net%2Fapi%2Fgms Ejemplo incorrecto: datahub-rest://my-datahub-host.net/api/gms
Explicación del problema: Airflow almacena conexiones como objetos Connection. Cuando una conexión HTTP contiene un path en la URL, Airflow espera que el path forme parte del host en la representación interna, y el campo schema se reserva para valores como http o https. Si la cadena de conexión no está URL-encoded, el parser de URIs de Airflow interpreta incorrectamente la parte con barra y mueve el path al campo schema, dejando el host sin /api/gms. El resultado es que las peticiones se envían a la URL errónea y DataHub responde 404.
Un caso típico de conexión mal parseada que genera el error es una cadena tipo datahub-rest://https://:TOKEN@my-datahub-host.net/api/gms que Airflow interpreta como host igual a https://my-datahub-host.net y schema igual a api/gms, en vez de host igual a https://my-datahub-host.net/api/gms y schema vacío.
Solución práctica: URL-encodear el host cuando crees la conexión fuera de la UI de Airflow. Por ejemplo, convierte la parte /api/gms en su representación percent encoded %2Fapi%2Fgms y usa la cadena datahub-rest://https://:TOKEN@my-datahub-host.net%2Fapi%2Fgms De esa forma el parser de Airflow asignará correctamente la ruta al host y la integración de DataHub podrá emitir metadata hacia el GMS sin problemas.
Opciones para aplicar la solución: 1) Si usas la UI de Airflow o el CLI oficial, estos suelen encargarse del encoding por ti. 2) Si gestionas conexiones desde un gestor externo como HashiCorp Vault o mediante Terraform, añade la llamada a la función de encoding adecuada, por ejemplo usando urlencode o la función de URL encoding de la plantilla que utilices, para codificar el host completo antes de almacenarlo. 3) Verifica la conexión con el comando airflow connections get CONN_ID --output yaml para comprobar cómo Airflow está interpretando host y schema.
Contexto técnico adicional: El DatahubRestHook del plugin de DataHub hereda de BaseHook de Airflow y depende de la lógica de parsing de URIs de Airflow para construir el objeto Connection. Esa lógica es la que determina si el path forma parte del host o del schema. URL-encodear evita ambigüedades y asegura que la URL final que se construye para la llamada REST sea la correcta, por ejemplo https://mi-datahub/api/gms.
Buenas prácticas: - Evitar crear conexiones sensibles directamente en la UI para entornos productivos. - Usar un backend de secretos o IaC como Terraform para gestionar las conexiones, pero recordar aplicar URL encoding a los hosts con path. - Probar la conexión desde Airflow CLI o logs de tareas para detectar errores 404 tempranos.
Caso real y lección aprendida: En nuestro entorno gestionado con Terraform descubrimos que la plantilla no estaba aplicando urlencode al host, y por eso todas las integraciones con DataHub fallaban con el error Unable to emit metadata to DataHub GMS. La corrección fue sencilla y consistió en aplicar el encoding en la variable que construye la cadena de conexión, redeployar y comprobar con airflow connections get que ahora host incluye /api/gms y schema viene vacío.
Sobre Q2BSTUDIO: En Q2BSTUDIO somos una empresa de desarrollo de software especializada en aplicaciones a medida y software a medida. Ofrecemos servicios integrales que incluyen soluciones basadas en inteligencia artificial, ia para empresas, agentes IA y proyectos de power bi para inteligencia de negocio. También somos especialistas en ciberseguridad y en la implantación de servicios cloud aws y azure. Si necesitas apoyo para integrar herramientas como DataHub y Airflow, automatizar pipelines de datos, diseñar soluciones seguras o desplegar servicios gestionados en la nube, nuestro equipo puede ayudarte a optimizar arquitecturas, aplicar buenas prácticas en gestión de conexiones y asegurar que los procesos de ingestión y lineage funcionan correctamente.
Servicios que podemos aportar en este contexto: auditoría y corrección de integraciones entre Airflow y sistemas de catálogo como DataHub, desarrollo de conectores a medida, despliegue de infraestructuras seguras en AWS y Azure, implementación de pipelines con enfoque en inteligencia de negocio y Power BI, y desarrollo de agentes IA para automatizar flujos y enriquecer metadata. Palabras clave que reflejan nuestra especialización incluyen aplicaciones a medida, software a medida, inteligencia artificial, ciberseguridad, servicios cloud aws y azure, servicios inteligencia de negocio, ia para empresas, agentes IA y power bi.
Si quieres que revisemos tu implementación, mejoremos la seguridad o automatizemos la gestión de conexiones y secretos en Airflow, contacta con Q2BSTUDIO y trabajaremos una solución personalizada que evite errores como Unable to emit metadata to DataHub GMS y garantice la continuidad de tus pipelines de datos.