Curieux de connaître les différents types de tables de Hive et comment elles sont différentes les unes des autres ?
Ayant discuté des bases des tables de Hive dans les modèles de données de Hive, explorons maintenant la différence majeure entre les tables internes et externes de Hive.
Dans cet article, nous allons discuter des deux différents types de table de Hive qui sont la table interne (table gérée) et la table externe. L’article énumère ensuite les différences entre les tables Hive internes et les tables externes. Nous verrons également différents cas où nous pouvons utiliser ces tables Hive.
Donc, commençons par les tables internes Hive et les tables externes.
Restez à jour avec les dernières tendances technologiques
Rejoignez DataFlair sur Telegram !!
- Introduction aux tables internes et externes de Hive
- Table interne de Hive
- Table externe Hive
- Différence entre la table interne et externe de Hive
- Sémantique de chargement
- a. Table interne
- b. Table externe
- DROP semantics
- a. Table interne
- b. Table externe
- Support de TRUNCATE
- ACID Support
- Mise en cache du résultat de la requête
- Quand utiliser la table interne et externe ?
- Table interne Hive
- Table externe de Hive
- Conclusion
Introduction aux tables internes et externes de Hive
Fondamentalement, Hive connaît deux types de tables différentes : La table interne et la table externe. La table interne est également connue sous le nom de table gérée.
Nous pouvons identifier les tables internes ou externes en utilisant l’instruction DESCRIBE FORMATTED table_name
dans Hive, qui affichera soit MANAGED_TABLE
soit EXTERNAL_TABLE
selon le type de table.
Table interne de Hive
Hive possède les données des tables internes.
C’est la table par défaut dans Hive. Lorsque l’utilisateur crée une table dans Hive sans la spécifier comme externe, alors par défaut, une table interne se crée dans un emplacement spécifique dans HDFS.
Par défaut, une table interne sera créée dans un chemin de dossier similaire au répertoire /user/hive/warehouse de HDFS. Nous pouvons remplacer l’emplacement par défaut par la propriété location pendant la création de la table.
Si nous abandonnons la table ou la partition gérée, les données de la table et les métadonnées associées à cette table seront supprimées du HDFS.
Table externe Hive
Hive ne gère pas les données de la table externe.
Nous créons une table externe pour un usage externe comme lorsque nous voulons utiliser les données en dehors de Hive.
Les tables externes sont stockées en dehors du répertoire de l’entrepôt. Elles peuvent accéder aux données stockées dans des sources telles que des emplacements HDFS distants ou des volumes de stockage Azure.
Chaque fois que nous abandonnons la table externe, alors seules les métadonnées associées à la table seront supprimées, les données de la table restent intactes par Hive.
Nous pouvons créer la table externe en spécifiant le mot clé EXTERNAL dans l’instruction Hive create table.
Différence entre la table interne et externe de Hive
Voyons maintenant la différence entre les deux tables de Hive. Les principales différences entre les tables internes et externes de Hive sont:
Sémantique de chargement
La sémantique de chargement varie dans les deux tables. Voyons la différence de sémantique de charge entre la table interne et la table externe.
a. Table interne
Lorsque nous chargeons des données dans une table interne, alors Hive déplace les données dans le répertoire de l’entrepôt.
Par exemple:
Ici dans cet exemple, nous créons une table ‘internaldemo’. Lorsque nous chargeons des données dans la table ‘internaldemo’, alors Hive déplace les données vers le répertoire de l’entrepôt.
Apprendre l’installation d’Apache Hive sur Ubuntu pour exécuter des requêtes Hive.
Maintenant, charger des données dans la table interne créée ci-dessus.
Lors de la description de la table, nous constatons que les données de la table sont déplacées dans le répertoire de l’entrepôt Hive.
b. Table externe
Avec le mot clé EXTERNAL, Hive sait qu’il ne gère pas les données de la table, il ne déplace donc pas les données vers son répertoire d’entrepôt. Hive ne vérifie même pas si l’emplacement externe au moment où il est défini existe ou non.
Par exemple :
Dans cet exemple, nous créons une table externe, ‘external_demo’ sur l’emplacement spécifié qui est ‘/home/dataflair/’. Lors du chargement des données dans la table externe, le Hive ne déplace pas les données de la table vers son répertoire d’entrepôt.
Maintenant, chargement des données dans la table externe créée ci-dessus.
En parcourant la table, nous pouvons voir que les données de la table Hive ne sont pas déplacées vers le répertoire de l’entrepôt Hive. Elles sont stockées dans l’emplacement spécifié lors de la création d’une table.
DROP semantics
Comme la sémantique de chargement, la sémantique de dépôt varie également dans les deux tables. Voyons la différence de sémantique de drop entre la table interne et la table externe.
a. Table interne
Déposer la table interne supprimera les données de la table, ainsi que les métadonnées associées à la table.
Par exemple:
Dans cet exemple, nous déposons la table gérée ‘internaldemo’. Vous pouvez voir que cela supprimera les métadonnées de la table ainsi que les données de la table.
Les données de la table sont également supprimées du HDFS.
b. Table externe
La suppression de la table externe ne supprime que les métadonnées de la table. Le contenu de la table reste intact.
Par exemple :
Dans cet exemple, nous pouvons voir que lors de la suppression de la table externe ‘démo externe’, le contenu de la table est toujours présent dans l’emplacement HDFS.
Support de TRUNCATE
La commande TRUNCATE ne fonctionne que pour la table interne.
Par exemple:
Dans cet exemple, nous essayons d’utiliser la commande truncate avec la table ‘externaldemo’. Nous obtiendrons un message d’erreur qui dit ‘Impossible de tronquer la table non gérée externaldemo’.
ACID Support
ACID/transactional fonctionne uniquement pour la table interne. Ils ne fonctionnent pas pour la table externe.
Mise en cache du résultat de la requête
La mise en cache du résultat de la requête qui enregistre les résultats d’une requête Hive exécutée pour les réutiliser sur des requêtes ultérieures ne fonctionne que pour la table interne.
Voilà donc quelques différences entre la table interne Hive et la table externe.
Voyons maintenant quand utiliser quelle table Hive.
Quand utiliser la table interne et externe ?
Table interne Hive
Nous pouvons utiliser la table interne dans les cas :
- Lors de la génération de tables temporaires.
- Lorsqu’il est nécessaire que Hive gère le cycle de vie de la table.
- Et lorsque nous ne voulons pas des données de la table après sa suppression.
Table externe de Hive
Nous pouvons utiliser la table externe dans les cas :
- Lorsque nous ne créons pas la table basée sur la table existante.
- Lorsqu’il est nécessaire d’utiliser des données en dehors de Hive. Par exemple, les fichiers de données sont lus et traités par un programme existant qui ne verrouille pas les fichiers.
- Lorsque nous ne voulons pas supprimer complètement les données de la table, même après DROP.
- Lorsque les données ne doivent pas être propres à Hive.
Donc, tout cela était dans les tables internes et externes de Hive. J’espère que vous avez aimé notre explication.
Conclusion
Après avoir lu l’article, nous pouvons conclure que les tables Hive sont de deux types- la table interne, également connue sous le nom de table gérée, et la table externe.
Les données de la table interne obtient géré par le Hive. Hive n’est pas responsable de la gestion des données de la table Externe.
Lors de la suppression de la table interne Hive, les données de la table et les métadonnées sont toutes deux supprimées et lors de la suppression de la table Externe Hive, seules les métadonnées de la table seront supprimées.
Voir aussi-
- Différentes façons de configurer le Metastore de Hive
- Les meilleurs livres Apache Hive pour apprendre Hive pour les débutants
Des questions tout en travaillant avec les tables internes et externes de Hive ? Demandez ci-dessous.
Keep Learning!