Traçabilité des données Hive : Traçabilité au niveau des colonnes pour HQL et Hadoop ETL

Traçabilité des données de la ruche Il s'agit de la carte au niveau des colonnes de la façon dont les données circulent dans votre HQL : quelles tables et colonnes sources alimentent chaque table, partition et vue Hive, et par quelles jointures, agrégations et VUE LATÉRALE extensions. La méthode la plus fiable pour la construire consiste à analyser le HQL lui-même. Gudu SQLFlow Il intègre un analyseur syntaxique dédié au dialecte Hive qui transforme vos scripts en un diagramme de lignage interactif au niveau des colonnes, sans toucher à votre cluster.

Essayez-le maintenant : collez n'importe quel script HiveQL dans le Visualiseur de lignées Hive en ligne gratuitSélectionnez le dialecte Hive et obtenez un diagramme de lignage au niveau des colonnes en quelques secondes. Aucun accès au cluster n'est requis : la version gratuite fonctionne dans le navigateur.

Pourquoi la traçabilité des données Hive est plus complexe qu'il n'y paraît

Un entrepôt Hadoop typique accumule des années de données HQL : chargements intermédiaires, partitionnés INSERER ÉCRASER Des tâches, des vues sur des tables externes et des scripts planifiés par Oozie ou Airflow que personne n'a lus depuis le départ de leur auteur. Répondre à la question « quels flux » dw.revenu_quotidien? ou « qu'est-ce qui se casse si on laisse tomber ? » statut des commandes en cours« ? » signifie suivre les références de colonnes dans l'ensemble du document.

Les analyseurs SQL génériques butent sur les constructions qui font de HiveQL son propre dialecte :

  • VUE LATÉRALE exploser() Une colonne d'entrée de tableaux ou de dictionnaires se divise en plusieurs lignes et de nouvelles colonnes dérivées. La fonction Lineage doit relier ces colonnes de sortie à la collection source unique.
  • Partitionné INSERER ÉCRASER — la colonne de partition peut provenir d'une valeur littérale statique dans le PARTITION La clause peut être modifiée ou dynamiquement à partir des dernières colonnes sélectionnées. Dans les deux cas, les colonnes prises en compte comme sources de lignage sont modifiées.
  • Tables externes — La table est un schéma de fichiers stockés dans HDFS ou dans un système de stockage objet. Lineage doit la traiter comme une source de premier ordre, même si elle n'a jamais été créée par une base de données SQL en amont.
  • Syntaxe spécifique à la rucheDISTRIBUER PAR, GROUPER PAR, insertion multiple (DE ... INSÉRER ... INSÉRER ...), les types SerDe et les identificateurs entre guillemets inversés ne respectent pas les grammaires ANSI uniquement.

SQLFlow analyse HiveQL avec un analyseur syntaxique dédié, l'un des 39 analyseurs spécifiques à chaque dialecte présents dans l'outil — une grammaire conçue pour HiveQL, et non un analyseur ANSI générique auquel on aurait ajouté des exceptions. Le moteur sous-jacent, le Analyseur SQL général, est développé commercialement depuis le milieu des années 2000 et est validé par rapport à environ 13 600 jeux de tests SQL par dialecte.

Hooks Atlas vs. analyse HQL : deux façons d’obtenir la lignée Hive

La plupart des équipes Hadoop découvrent d'abord la lignée à travers Atlas ApacheAtlas excelle véritablement dans son domaine : son hook Hive s’intègre au cluster et capture la lignée des tâches lors de leur exécution, vous offrant ainsi un enregistrement de gouvernance en temps réel de ce qui a été exécuté, quand, lié à la classification et à l’étiquetage sur l’ensemble de la pile Hadoop.

L’approche par hameçonnage présente toutefois des limites structurelles, et celles-ci sont particulièrement importantes lorsque les équipes recherchent une lignée :

Hooks d'exécution (style Atlas)Analyse syntaxique HQL (SQLFlow)
Nécessite un cluster en fonctionnementOui, la traçabilité n'est capturée que lorsque les tâches s'exécutent avec le hook installé.Non — analyse statique du texte SQL, n'importe où
Couvre le code qui n'a pas été exécuté.Non — un script qui n'a jamais été exécuté ne laisse aucune traceOui, tous les scripts du dépôt, y compris les tâches obsolètes ou rarement exécutées.
Fonctionne pendant/après la migrationDifficile — une fois le cluster mis hors service, le point de capture l'est également.Oui — analysez le fichier HQL exporté hors ligne, avant, pendant et après la migration.
Couverture historiqueCela commence lorsque vous installez le crochetComplet — le code est l'enregistrement
Lit vos donnéesS'exécute au sein du cluster, parallèlement aux tâches.Jamais — uniquement le texte SQL et les métadonnées de schéma

Ces approches sont complémentaires plutôt que concurrentes : les hooks indiquent ce qui a été exécuté ; un analyseur syntaxique indique ce que fait le code. Si votre question est « documenter chaque dépendance de cet environnement Hive afin de pouvoir l’auditer ou le déplacer », l’analyse syntaxique est l’outil qui y répond, et SQLFlow peut exploiter ses résultats. DataHub, Microsoft Purview ou OpenMetadata si l'un d'eux est votre système d'enregistrement.

Traçabilité au niveau des colonnes d'une tâche HiveQL réelle

Voici la structure du travail que chaque entrepôt Hadoop exécute chaque nuit : un partitionné INSERER ÉCRASER construit à partir de tables de transit jointes :

INSERT OVERWRITE TABLE dw.daily_revenue PARTITION (ds = '2026-07-11') SELECT c.region, SUM(o.amount) AS revenue, COUNT(DISTINCT o.order_id) AS order_cnt FROM staging.orders o JOIN staging.customers c ON o.customer_id = c.customer_id WHERE o.ds = '2026-07-11' AND o.status = 'COMPLETE' GROUP BY c.region;

Exécutez ce code via SQLFlow et le diagramme affichera, pour chaque colonne de sortie :

  • dw.daily_revenue.revenue est alimenté directement par mise en place.commandes.montant à travers SOMME().
  • dw.daily_revenue.order_cnt est alimenté par staging.orders.order_id à travers COUNT(DISTINCT).
  • dw.revenu_quotidien.région cartes directement issues de région de mise en scène des clients.
  • La valeur de la partition statique est renseignée dw.daily_revenue.ds — SQLFlow modélise la colonne de partition comme une cible de lignage même si elle n'apparaît jamais dans la liste SELECT.
  • statut des commandes en cours, staging.orders.dset les deux identifiant_client Les colonnes façonnent le résultat à travers les et REJOINDRE conditions sans apparaître dans la sortie. SQLFlow les enregistre comme lignée indirecte (d'impact), un type de relation distinct et activable. La plupart des outils de traçabilité ne font pas cette distinction, or c'est précisément ce dont l'analyse d'impact a besoin : le changement statut Le codage et tous les chiffres de revenus qui en découlent.

La même résolution de colonne s'applique à travers VUE LATÉRALE exploser(): si une table en aval sélectionne article.sku d'une explosion articles_événements_commande tableau, traces SQLFlow référence de retour à la colonne de la collection source, via l'alias de table introduit par la vue latérale. Elle résout également les références via les CTE, les sous-requêtes imbriquées, les vues, et SÉLECTIONNER * expansion, donc le HQL hérité, riche en étoiles, produit toujours des bords de colonne précis.

Lignée de la ruche au moment de la migration

La raison la plus fréquente pour laquelle les équipes ont besoin de suivre la traçabilité Hive aujourd'hui est qu'elles abandonnent Hive. Que la destination soit Spark, Databricks ou un entrepôt de données cloud, les questions restent les mêmes : quels jobs alimentent quelles tables, dans quel ordre doivent-ils être déplacés et lesquels de ces 4 000 scripts sont réellement obsolètes ?

Comme SQLFlow fonctionne uniquement à partir du code, vous pouvez exécuter l'analyse sur une exportation de votre référentiel HQL depuis n'importe quelle machine ; aucun accès au cluster (éventuellement figé) n'est requis. L'analyse par lots est conçue à cet effet : SQLFlow analyse des environnements de plus de 100 bases de données et plus d'un million de colonnes, conserve les résultats dans un référentiel de lignage persistant et les actualise de manière incrémentielle à mesure que les scripts changent pendant la migration. Et depuis Hive, Spark SQL, et Databricks Chaque outil possède son propre analyseur syntaxique de dialecte ; vous pouvez ainsi analyser côte à côte le domaine source et le domaine cible réécrit et vérifier que la nouvelle lignée correspond à l’ancienne.

Comment le faire fonctionner

  • Collez ou téléchargez du HQL Dans SQLFlow Cloud — niveau gratuit, résultats dans le navigateur, exportables au format JSON, CSV ou PNG.
  • Extraire les métadonnées du métastore via JDBC, les définitions de vues et les schémas sont résolus SÉLECTIONNER * et les références croisées correctement.
  • Automatisez-le à travers le API REST ou une interface de ligne de commande sans interface graphique — par exemple, analyser chaque modification HQL dans l'intégration continue avant sa fusion.
  • Gardez tout dans le réseau avec SQLFlow sur siteDocker ou Kubernetes, isolés du réseau si nécessaire, $500/mois ou $4 800 en une seule fois par type de base de données sélectionné. De nombreuses infrastructures Hadoop sont déployées dans les banques et les opérateurs télécoms où les requêtes SQL ne peuvent pas sortir du réseau ; cette édition leur est dédiée.

Lors de chaque déploiement, SQLFlow effectue uniquement une analyse statique : il lit le code SQL et les métadonnées du schéma, jamais les lignes de vos tables. Depuis la version 8.2.3, vous pouvez également interroger le graphe résultant en langage naturel (« quelles tables dépendent de »). commandes de mise en scène?), chaque tableau et chaque colonne de la réponse étant validés par rapport au graphique analysé avant affichage. Pour une présentation plus complète des fonctionnalités, consultez la section Présentation de l'outil de traçabilité des données SQL.

Foire aux questions

SQLFlow peut-il construire la lignée Hive sans accès au cluster ?

Oui. SQLFlow analyse le texte HQL ; il suffit donc d’exporter vos scripts (et le DDL pour une interprétation précise). SÉLECTIONNER * La résolution est suffisante. C'est là la principale différence avec les approches basées sur des hooks comme Apache Atlas, qui ne capturent la lignée que lorsque les tâches s'exécutent sur un cluster en production avec le hook installé.

Gère-t-il la commande LATERAL VIEW explode et d'autres syntaxes spécifiques à Hive ?

Oui. Hive possède son propre analyseur syntaxique dédié parmi les 39 analyseurs syntaxiques de dialecte de SQLFlow, couvrant VUE LATÉRALE exploser(), partitionné INSERER ÉCRASERet les tables externes.

La lignée est-elle au niveau des colonnes ou au niveau de la table ?

Au niveau des colonnes. Pour chaque colonne de sortie, SQLFlow identifie les colonnes sources exactes qui l'alimentent, ainsi que les fonctions, conversions, jointures et opérateurs ensemblistes utilisés. Il enregistre également la lignée indirecte : les colonnes utilisées dans , REJOINDRE, et GROUPER PAR clauses qui façonnent le résultat sans y figurer.

Puis-je exporter la lignée Hive vers mon catalogue de données ?

Oui. Les déploiements en entreprise incluent des adaptateurs d'exportation pour DataHub, Microsoft Purview et OpenMetadata, ainsi que l'exportation JSON et CSV et une API REST pour les intégrations personnalisées.

Est-ce que SQLFlow lit les données stockées dans mes tables Hive ?

Non. Il effectue une analyse statique du code SQL et lit, en option, les métadonnées du schéma depuis le metastore. Les données des lignes de la table ne sont jamais modifiées et, avec l'édition sur site, le texte SQL lui-même ne quitte jamais votre réseau.

Combien coûte SQLFlow ?

SQLFlow Cloud est gratuit au départ ; les comptes premium coûtent 49,99 £/mois. SQLFlow On-Premise coûte 500 £/mois ou 4 800 £ (paiement unique) par type de base de données sélectionné, installable sur deux serveurs, avec des types de bases de données supplémentaires à 100 £/mois ou 1 000 £ (paiement unique) chacun.

Cartographiez la lignée de votre domaine Hive

Collez un script HQL dans le visualiseur gratuit, ou contactez-nous pour organiser une analyse par lots de l'ensemble de votre entrepôt Hadoop avant le début de la migration.