Todo sobre las plataformas de descubrimiento de datos (DDP)
(eugeneyan.com)Un resumen de por qué se necesitan herramientas como Nemo, Amundsen y DataHub, y qué funciones ofrecen
"¿Por qué necesitamos una DDP? ¿Qué hace exactamente?"
→ Una plataforma que ayuda a encontrar rápidamente dónde están los datos necesarios dentro de una organización, entender qué son y aprender cómo usarlos
[ Preguntas que suelen hacerse al buscar datos ]
→ ¿Dónde puedo encontrar los datos de "_____"? : A veces ni siquiera se sabe con qué palabra buscarlos. Se buscan nombres de tablas/columnas con términos como click, page view, etc.
→ ¿Qué son estos datos? : ¿Qué columnas tiene esta tabla, qué tipo de datos tienen y qué significan estos valores?
→ ¿A quién debo pedir acceso? : La información de propiedad y permisos de los datos también debe formar parte de los metadatos
→ ¿Cómo se generaron estos datos? ¿Son confiables? : ¿Quién los creó y por qué proceso se generaron? ¿Fue algo hecho manualmente cada mes por un analista? ¿Qué tanto se usan dentro de la empresa? ¿Cuál es el linaje de estos datos?
→ ¿Cómo debo usar estos datos? : ¿Qué columnas están relacionadas? ¿Con qué tablas debo hacer join? ¿Qué filtros debo usar para limpiar los datos? ¿Quién usa principalmente esta tabla? (porque entonces se le puede preguntar) ¿Qué columnas se usan más?
→ ¿Con qué frecuencia se actualizan estos datos? : Si a veces se retrasan, ¿con qué frecuencia ocurre? ¿Cuál es el rango temporal de los datos? Si solo hay unas cuantas semanas, probablemente no sirvan para machine learning.
[ Funciones para encontrar, entender y usar datos ]
- Buscar datos o encontrarlos de formas más inteligentes
→ La forma básica de encontrar los datos deseados es buscar en ElasticSearch metadatos como nombres de columnas, descripciones de tablas y columnas, así como descripciones o comentarios ingresados por usuarios
→ Si hay muchos resultados de búsqueda, hace falta priorizarlos. En Lyft y Spotify, el ranking se decide según qué tanto se usa una tabla. Es decir, analizan los logs de consultas y agregan el nivel de uso de la tabla como información de ranking en ElasticSearch.
→ Nemo de Facebook lleva esto más allá. Analiza en lenguaje natural los términos de búsqueda con spaCy y determina el ranking mediante scoring basado en kNN usando Unicorn, que se usa para buscar en el grafo social
→ Otra forma es mediante recomendaciones. Se recomiendan los datos a los que más se accede y que más se usan dentro de la organización y del equipo
- Entender los datos mediante esquema, vista previa, estadísticas y linaje
→ La información básica para entender una tabla es el esquema de datos: nombres de columnas, tipos de datos y descripción
→ Si el usuario tiene permisos de lectura, se puede ofrecer una vista previa de los datos (unas 100 filas)
→ También se pueden ofrecer estadísticas precalculadas por columna: número de filas por columna, número de filas con null, valor máximo/mínimo/promedio/mediana/desviación estándar, número de filas únicas y, si es una columna de fecha, el rango temporal completo de los datos
→ También se puede ofrecer el linaje de datos para revisar dependencias aguas arriba y aguas abajo: en el caso de trabajos ETL (programados con Airflow), se puede verificar el schedule y si hubo retrasos
- Aprender a usar los datos a partir de cómo los usan otros usuarios
→ Una vez encontrada una tabla, ¿cómo se puede ayudar a usarla? Una forma simple es mostrar a las personas relacionadas con esa tabla
→ Los dueños de los datos pueden otorgar permisos y los usuarios frecuentes pueden explicar la tabla o señalar particularidades de los datos: Amundsen y DataHub permiten conectar personas como entidades a una tabla
→ Pero depender solo de expertos que conocen bien esos datos puede generar cuellos de botella, por lo que una forma más escalable es conectar metadatos adicionales
→ Se pueden ofrecer estadísticas de uso de cada columna para que los usuarios encuentren las columnas más relevantes.
→ También es útil mostrar la lista de tablas con las que normalmente se hace join y las columnas usadas para hacerlo, para entender con qué tabla conviene unir la tabla objetivo. Este tipo de datos requiere analizar logs de consultas
→ Para ofrecer información más detallada sobre el uso de los datos, se pueden mostrar consultas recientes sobre esa tabla, lo que permite ver qué datos se están filtrando realmente.
→ El linaje de datos también es útil. Se pueden identificar tablas downstream que usan la tabla actual y mostrar también la consulta que las genera. Así se puede ver cómo se usa la tabla en otros casos de uso
→ Si una de esas tablas downstream coincide con mi objetivo, usarla puede reducir costos de cómputo y almacenamiento.
→ Data Access Layer de Twitter, Databook de Uber y Metacat de Netflix soportan linaje
→ Antes de usar realmente los datos, también se quiere saber con qué frecuencia se actualizan. Ayuda indicar con qué granularidad temporal están particionados los datos (día/hora, etc.).
→ Una DDP puede integrarse con plataformas como Airflow para inspeccionar trabajos ETL programados y ver cuánto tardan, entre otras cosas.
[ Comparación general entre distintas DDP ]
→ Todas soportan búsqueda de texto libre basada en ElasticSearch o Solr. Amundsen y Lexikon ofrecen funciones de recomendación en la página principal
→ Todas muestran información básica de tablas (esquema, descripción). Amundsen y Databook ofrecen vista previa de datos y estadísticas por columna
→ La mayoría de las plataformas incluyen linaje de datos. Amundsen aún no lo soporta, pero está en el roadmap de 2020
→ Cinco plataformas están publicadas como open source
[ Comparación de DDP open source ]
- DataHub (LinkedIn) : https://github.com/linkedin/datahub
→ Publicado en febrero de 2020
→ Soporta búsqueda, esquema de tablas, ownership y linaje
→ Soporta tres entidades: Dataset, User y Group. Está previsto agregar entidades como Schemas/Jobs/Metrics/Dashboards
→ Soporta metadatos de Hive, Kafka y RDB (internamente soportan más, y podrían publicar más)
→ Lo adoptaron Expedia y TypeForm, y MS, Morgan Stanley, Orange Telecom y ThoughtWorks también están haciendo POC
- Amundsen (Lyft) : https://github.com/amundsen-io/amundsen
→ Publicado en octubre de 2019
→ Soporta búsqueda, recomendaciones, y una página de detalle de tabla donde se muestran bien la vista previa, estadísticas por columna, propietarios y usuarios principales. No tiene linaje todavía, pero está previsto agregarlo
→ También se planea ofrecer integración con un sistema de Data Quality (probablemente Great Expectations - https://greatexpectations.io/)
→ Tiene una gran comunidad: han contribuido desarrollando integraciones con BigQuery/Redshift/Apache Atlas, entre otras
→ Soporta integración con más de 15 tipos de fuentes de datos (Redshift, Cassandra, Hive, Snowflake y varios RDB), dashboards de Tableau, Redash, Mode Analytics, Airflow, etc.
→ También está bien documentado y se puede probar localmente con Docker
→ Lo han adoptado más de 30 organizaciones, incluidas Asana, Instacart, iRobot y Square.
→ En julio de 2020 se unió como nuevo proyecto de incubación de la Linux AI Foundation.
- Metacat (Netflix) : https://github.com/Netflix/metacat
→ Publicado en junio de 2018
→ Incluye búsqueda, visualización de esquema y métricas para analizar costo y espacio.
→ Tiene función de notificación ante cambios en tablas/particiones. Es posible recibir alertas cuando algo se elimina por temas de costo, etc.
→ Soporta integración con Hive, Teradata, Redshift, S3, Cassandra y RDS
→ Se ha dicho que están trabajando en versionado/validación de esquemas y metadatos.
→ Aunque es open source, no tiene nada de documentación, así que ninguna empresa lo ha adoptado.
- Marquez (WeWork) : https://github.com/MarquezProject/marquez
→ Publicado en octubre de 2018
→ Enfocado en calidad de datos y linaje
→ Soporta data governance, calidad de datos mediante Great Expectations, y catálogo de datasets y jobs
→ Ofrece WebUI, componentes para Airflow y clientes Java/Python
→ Se puede probar localmente con Docker, pero no tiene mucha documentación
- Apache Atlas (Hortonworks) : https://atlas.apache.org/
→ Comenzó en julio de 2015 como parte de la Data Governance Initiative
→ La versión 1.0 se publicó en junio de 2018 y actualmente va en 2.1
→ Su objetivo principal es el data governance, ayudando a las organizaciones a cumplir requisitos de seguridad y compliance.
→ Tiene funciones ricas como etiquetado de recursos, propagación de etiquetas hacia datasets downstream y seguridad para el acceso a metadatos
→ También permite notificaciones de cambios en metadatos
→ Soporta búsqueda de texto libre, visualización detallada del esquema y linaje de datos
→ También soporta búsqueda avanzada con sintaxis similar a SQL
→ Soporta integración con fuentes de metadatos como HBase, Hive y Kaflka
→ También permite crear/modificar metadatos mediante REST API
→ También está bien documentado
-
Es interesante el caso de ING, que adoptó Atlas y Amundsen juntos https://medium.com/wbaa/…
-
Aunque no es una DDP completa, Whale open source es una herramienta DDP ultraligera que indexa en Markdown el contenido de un data warehouse y soporta búsqueda, edición y versionado
→ Vale la pena revisarla como herramienta DDP para desarrolladores. https://github.com/dataframehq/whale
- No es tan sexy como machine learning, pero el descubrimiento de datos es un primer paso importante del workflow de data science
2 comentarios
Oh, de verdad es un muy buen resumen. Tendré que probar Amundsen.
Nemo - la plataforma de descubrimiento de datos de Facebook https://es.news.hada.io/topic?id=3024
Un caso de implementación de DDP poco común en Corea