20 points par xguru 2020-11-23 | 2 commentaires | Partager sur WhatsApp

Résumé des raisons pour lesquelles des outils comme Nemo, Amundsen ou DataHub sont nécessaires, et des fonctionnalités qu’ils apportent

« Pourquoi a-t-on besoin d’une DDP ? À quoi ça sert ? »

→ Une plateforme qui aide à trouver rapidement où se trouvent les données nécessaires dans l’organisation, à comprendre de quoi il s’agit et à apprendre comment les utiliser

[ Questions le plus souvent posées lorsqu’on cherche des données ]

→ Où peut-on trouver les données « _____ » ? : parfois, on ne sait même pas avec quels mots faire la recherche. On cherche les noms de tables/colonnes avec des termes comme click, page view, etc.

→ Qu’est-ce que ces données ? : quelles colonnes cette table contient-elle, quels sont les types de données, et que signifient ces valeurs ?

→ À qui faut-il demander l’autorisation d’accès ? : les informations d’ownership et de droits doivent elles aussi faire partie des métadonnées

→ Comment ces données ont-elles été produites ? Peut-on s’y fier ? : qui les a créées, et par quel processus ? Est-ce qu’un analyste les a préparées manuellement chaque mois ? À quel point sont-elles utilisées dans l’entreprise ? Quelle est leur lignée ?

→ Comment faut-il utiliser ces données ? : quelles colonnes sont liées ? Avec quelle table faut-il faire une jointure ? Quels filtres utiliser pour nettoyer les données ? Qui utilise le plus souvent cette table ? (pour pouvoir lui demander) Quelles colonnes sont les plus utilisées ?

→ À quelle fréquence ces données sont-elles rafraîchies ? : si elles arrivent parfois en retard, à quelle fréquence cela se produit-il ? Sur quelle période portent-elles ? Si elles ne couvrent que quelques semaines, elles ne semblent sans doute pas adaptées au machine learning.

[ Fonctions permettant de trouver, comprendre et utiliser les données ]

  • Rechercher les données ou les trouver par des moyens plus intelligents

→ La méthode de base pour trouver les données voulues consiste à rechercher dans ElasticSearch des métadonnées telles que les noms de colonnes, les descriptions de tables et de colonnes, ainsi que les descriptions ou commentaires saisis par les utilisateurs

→ S’il y a beaucoup de résultats, il faut pouvoir les classer par priorité. Chez Lyft et Spotify, le classement dépend de la fréquence d’utilisation des tables. En pratique, les logs de requêtes sont analysés pour injecter l’usage des tables dans les informations de ranking d’ElasticSearch.

→ Nemo de Facebook pousse cela plus loin. Les termes de recherche sont analysés en langage naturel avec spaCy, et le ranking est déterminé via un scoring fondé sur le kNN avec Unicorn, utilisé pour la recherche dans le graphe social

→ Une autre approche passe par la recommandation. On recommande les données les plus consultées et utilisées au sein de l’organisation et de l’équipe

  • Comprendre les données via le schéma, la prévisualisation, les statistiques et la lignée (Lineage)

→ L’information de base pour comprendre une table, c’est le schéma des données : nom des colonnes, type de données, description

→ Si l’utilisateur dispose du droit de lecture, on peut fournir une prévisualisation des données (environ 100 lignes)

→ On peut aussi fournir des statistiques pré-calculées au niveau des colonnes : nombre de lignes par colonne, nombre de lignes nulles, maximum/minimum/moyenne/médiane/écart-type, nombre de valeurs uniques, et pour les colonnes de date, la plage temporelle complète des données

→ La lignée des données permet aussi de vérifier les dépendances en amont et en aval : dans le cas des jobs ETL (planifiés avec Airflow), on peut voir le planning, les retards éventuels, etc.

  • Apprendre à utiliser les données à travers les usages des autres utilisateurs

→ Une fois la table trouvée, comment aider l’utilisateur à s’en servir ? Une méthode simple consiste à montrer les personnes liées à cette table

→ Les propriétaires des données peuvent accorder les accès, et les utilisateurs fréquents peuvent présenter les données ou signaler leurs particularités : Amundsen et DataHub permettent de relier des personnes comme entités à une table

→ Mais ne s’appuyer que sur ces experts peut créer un goulot d’étranglement ; relier des métadonnées supplémentaires constitue donc une approche plus scalable

→ Il est possible de fournir des statistiques d’usage pour chaque colonne afin d’aider l’utilisateur à trouver les colonnes les plus pertinentes

→ Il est aussi pratique de fournir la liste des tables le plus souvent jointes avec cette table, ainsi que les colonnes utilisées pour la jointure, afin de savoir quelles tables joindre. Ces données nécessitent l’analyse des logs de requêtes

→ Pour donner des informations plus détaillées sur l’usage des données, on peut aussi fournir les requêtes récentes sur cette table, ce qui permet de voir quels filtres sont réellement utilisés

→ La lignée (Lineage) est également utile. Elle permet d’identifier les tables downstream qui utilisent la table actuelle, ainsi que les requêtes qui les produisent. On peut ainsi voir comment la table est exploitée dans d’autres cas d’usage

→ Si l’une de ces tables downstream correspond à mon besoin, je peux l’utiliser directement et réduire les coûts de calcul et de stockage

→ Le Data Access Layer de Twitter, Databook d’Uber et Metacat de Netflix prennent en charge la lineage

→ Avant d’utiliser réellement les données, on veut aussi savoir à quelle fréquence elles sont mises à jour. Il est utile d’indiquer à quelle granularité temporelle (jour, heure, etc.) les données sont partitionnées

→ Une DDP peut s’intégrer à une plateforme comme Airflow pour inspecter les jobs ETL planifiés et voir, par exemple, leur durée d’exécution

[ Comparaison générale des différentes DDP ]

→ Toutes prennent en charge la recherche full-text basée sur ElasticSearch ou Solr. Amundsen et Lexikon proposent aussi des recommandations sur la page d’accueil

→ Toutes affichent les informations de base sur les tables (schéma, description). Amundsen et Databook fournissent aussi la prévisualisation des données et les statistiques de colonnes

→ La plupart des plateformes intègrent une fonction de lineage. Amundsen ne la prend pas encore en charge actuellement, mais cela figure sur la roadmap 2020

→ Cinq de ces plateformes sont publiées en open source

[ Comparatif des DDP open source ]

→ publié en février 2020

→ prend en charge la recherche, le schéma de table, l’ownership et la lineage

→ prend en charge trois entités : Dataset, User et Group. Des entités comme Schemas/Jobs/Metrics/Dashboards sont prévues

→ prend en charge les métadonnées Hive, Kafka et RDB (en interne, davantage de sources sont prises en charge, et d’autres pourront être ouvertes)

→ adopté par Expedia, TypeForm, etc., tandis que MS, Morgan Stanley, Orange Telecom, ThoughtWorks, etc. sont en POC

→ publié en octobre 2019

→ prend en charge la recherche, les recommandations, ainsi qu’une page de détail de table bien conçue avec prévisualisation/statistiques de colonnes/propriétaires/utilisateurs principaux. Pas encore de fonctionnalité de lineage, mais elle est prévue

→ l’intégration avec un Data Quality System est également prévue (probablement Great Expectations - https://greatexpectations.io/)

→ dispose d’une excellente communauté : elle a développé et contribué à des intégrations avec BigQuery/Redshift/Apache Atlas, etc.

→ prend en charge l’intégration avec plus de 15 types de sources de données (Redshift, Cassandra, Hive, Snowflake et divers RDB), ainsi qu’avec les dashboards Tableau, Redash, Mode Analytics, Airflow, etc.

→ la documentation est bien faite, et il est possible de le tester en local avec Docker

→ adopté par plus de 30 organisations, dont Asana, Instacart, iRobot et Square.

→ a rejoint en juillet 2020 les nouveaux projets en incubation de la Linux AI Foundation.

→ publié en juin 2018

→ comprend la recherche, la visualisation des schémas, ainsi que des métriques d’analyse des coûts et de l’espace

→ dispose d’une fonction de notification pour les changements de tables/partitions. Il est possible d’être alerté lorsqu’un élément est supprimé pour des raisons de coût, etc.

→ prend en charge les intégrations avec Hive, Teradata, Redshift, S3, Cassandra et RDS

→ a indiqué travailler sur des fonctions de versioning/validation des schémas et métadonnées

→ bien qu’open source, aucune entreprise ne l’a adopté car il n’y a absolument aucune documentation

→ publié en octobre 2018

→ se concentre sur la qualité des données et la lineage

→ prend en charge la gouvernance des données, la qualité des données via Great Expectations, ainsi qu’un catalogue pour les datasets et les jobs

→ fournit une WebUI, des composants Airflow et des clients Java/Python

→ peut être testé en local avec Docker, mais la documentation est limitée

→ démarré en juillet 2015 dans le cadre de la Data Governance Initiative

→ la version 1.0 a été publiée en juin 2018, et la version actuelle est la 2.1

→ son objectif principal est la gouvernance des données, afin d’aider les organisations à respecter les exigences de sécurité et de conformité

→ il offre de riches fonctionnalités, notamment le tagging des ressources, la propagation des tags vers les datasets downstream et la sécurité de l’accès aux métadonnées

→ il prend aussi en charge les notifications de modification des métadonnées

→ prend en charge la recherche free-text, la vue détaillée des schémas et la lineage des données

→ il prend également en charge une recherche avancée avec une syntaxe proche de SQL

→ prend en charge l’intégration avec des sources de métadonnées comme HBase, Hive, Kaflka, etc.

→ il est aussi possible de créer/modifier des métadonnées via l’API REST

→ la documentation est également de bonne qualité

  • Le cas d’ING, qui a déployé Atlas et Amundsen ensemble, est intéressant : https://medium.com/wbaa/…

  • Sans être une DDP complète, l’open source Whale est un outil DDP ultra-simple qui indexe en Markdown le contenu d’un data warehouse et prend en charge la recherche, la modification, le versioning, etc.

→ cela vaut le coup d’y jeter un œil comme outil DDP orienté développeurs : https://github.com/dataframehq/whale

  • Ce n’est pas aussi sexy que le machine learning, mais la découverte de données est une première étape importante du workflow de la data science

2 commentaires

 
toughrogrammer 2020-11-23

Oh, très bonne synthèse. Il va falloir que j’essaie Amundsen.

 
xguru 2020-11-23

Nemo - la plateforme de découverte de données de Facebook https://fr.news.hada.io/topic?id=3024

Un exemple de mise en place d’une DDP encore rare en Corée