Introduction à la Table externe dans Hive
Une table externe est une table qui décrit le schéma ou les métadonnées de fichiers externes. Fondamentalement, il existe deux types de tables dans les tables gérées par la RUCHE ou internes et les tables externes. Le but principal de la définition d’une table externe est d’accéder et d’exécuter des requêtes sur des données stockées en dehors de la Ruche. Ces fichiers de données peuvent être stockés dans d’autres outils tels que Pig, Azure storage Volumes (ASV) ou tout emplacement HDFS distant. Hive suppose qu’elle n’a pas la propriété des données pour les tables externes et qu’elle n’a donc pas besoin de gérer les données comme dans les tables gérées ou internes. De plus, pour les tables externes, les données ne sont pas supprimées lors de la suppression de la table.
Travailler et créer des tables externes dans Hive
Par défaut, dans le répertoire de table Hive est créé sous le répertoire de base de données. L’exception est la base de données par défaut. L’emplacement user/hive/warehouse n’a pas de répertoire, de sorte que les tables de base de données par défaut auront son répertoire directement créé sous cet emplacement. Il est recommandé de créer des tables externes si nous ne voulons pas utiliser l’emplacement par défaut.
Commencez Votre Cours Gratuit de Science des Données
Hadoop, Science des Données, Statistiques &autres
Une table externe est généralement utilisée lorsque les données sont situées en dehors de la ruche.
Créons une table externe en utilisant le mot clé « EXTERNE » avec la commande ci-dessous.
CREATE EXTERNAL TABLE if not exists students
(
Roll_id Int,
Class Int,
Name String,
Rank Int)
Row format delimited fields terminated by ‘,’
Location ‘/data/students_details’;
Sortie:
Une table externe peut également être créée en copiant le schéma et les données d’une table existante, avec la commande ci-dessous:
CREATE EXTERNAL TABLE if not exists students_v2 LIKE students
Location ‘/data/students_details’;
Si nous omettons le mot clé EXTERNE, la nouvelle table créée sera externe si la table de base est externe. De même, si la table de base est gérée avec le mot clé external, la nouvelle table créée sera external.
Pour identifier le type de table créée, la clause DESCRIBE FORMATTED peut être utilisée. À la fin de la description détaillée de la table, le type de table de sortie sera soit « Table gérée », soit « Table externe ».
Les tables partitionnées aident à diviser les données en sous-segments ou partitions logiques, rendant les performances des requêtes plus efficaces. Une table partitionnée peut être créée comme indiqué ci-dessous.
CREATE EXTERNAL TABLE if not exists students
( roll_id Int,
name String,
Rank Int)
partitioned by (class Int)
Row format delimited fields terminated by ‘\t’
Sortie:
Il Peut Y Avoir Des Cas où La Partition ou La Structure d’Une Table Externe Est Modifiée, Puis En Utilisant Cette Commande, Les Informations De Métadonnées Peuvent Être Actualisées :
MSCK REPAIR TABLE external_table_name
1. Table externe partitionnée
Lors de la création d’une table externe non partitionnée, la clause LOCATION est requise. Mais pour une table externe partitionnée, ce n’est pas nécessaire. L’instruction ALTER TABLE est requise pour ajouter des partitions avec la clause LOCATION.
ALTER TABLE students ADD PARTITION (class =10)
Location ‘here://master_server/data/log_messages/2012/01/02’;
De Hive v0.8.à partir de 0, plusieurs partitions peuvent être ajoutées dans la même requête. En outre, l’emplacement d’une partition peut être modifié par la requête ci-dessous, sans déplacer ni supprimer les données de l’ancien emplacement.
ALTER TABLE students_v2 partition( class = 10)
Set location ‘s2n://buckets/students_v2/10’;
Pour supprimer une partition, la requête ci-dessous est utilisée :
ALTER TABLE students DROP IF EXISTS PARTITION (class = 12);
Cette commande supprimera les données et métadonnées de la partition pour les tables gérées ou internes. Cependant, pour les tables externes, les données ne sont pas supprimées.
2. Opérations sur la table externe
Les opérations telles que SELECT, JOINS, ORDER BY, GROUP BY, CLUSTER BY et autres sont implémentées sur des tables externes. Les tables externes peuvent être facilement jointes à d’autres tables pour effectuer des manipulations de données complexes. Les concepts de partitionnement, de bucket et d’indexation sont également implémentés sur les tables externes de la même manière que pour les tables gérées ou internes. Toutes les propriétés de configuration dans Hive sont également applicables aux tables externes. Par exemple, en définissant skip.tête.ligne. Count = 1, nous pouvons ignorer la ligne d’en-tête du fichier de données.
Tous les formats de fichiers tels que ORC, AVRO, TEXTFILE, SEQUENCE FILE ou PARQUET sont pris en charge pour les tables internes et externes de Hive. Lors de la création d’une table, le mappage positionnel est utilisé pour insérer des données dans la colonne et cet ordre est maintenu.
Types de données dans les tables externes : Dans les tables externes, les types de données de collection sont également pris en charge avec les types de données primitifs (comme entier, chaîne, caractère). Il est nécessaire de spécifier les délimiteurs des éléments des types de données de collection (comme un tableau, une structure et une carte).
Quand utiliser des tables externes dans Hive ?
Généralement, les tables internes sont créées dans Hive. Mais pour certains scénarios, une table externe peut être utile. Ce sont:
- Lorsque des données sont placées en dehors de l’emplacement Hive ou HDFS, la création d’une table externe aide car les autres outils qui peuvent utiliser la table ne bloquent pas ces fichiers.
- Une table externe peut être créée lorsque les données ne sont présentes dans aucune table existante (c’est-à-dire en utilisant la clause SELECT).
- La table externe doit être créée si nous ne voulons pas que Hive possède les données ou possède d’autres contrôles de données.
- La table externe empêche également toute perte accidentelle de données, car lors de la suppression d’une table externe, les données de base ne sont pas supprimées. Cela agit comme une fonction de sécurité dans la ruche. C’est la raison pour laquelle TRUNCATE ne fonctionnera pas non plus pour les tables externes.
Features
Il existe certaines fonctionnalités dans Hive qui ne sont disponibles que pour les tables gérées ou externes. Ce sont : les commandes
- comme ARCHIVE/UNARCHIVE /TRUNCATE/CONCATENATE/MERGE ne fonctionnent que pour les tables internes.
- L’ACID ne fonctionne que pour les tables gérées ou internes.
- La clause DROP supprime uniquement les métadonnées des tables externes. Cependant, il supprime également les données sous-jacentes pour les tables internes.
- La mise en cache des résultats de requête n’est possible que pour les tables gérées.
- La contrainte RELY est autorisée uniquement sur les tables externes.
- Certaines fonctionnalités des vues matérialisées ne fonctionnent que pour les tables gérées.
Conclusion
Dans ce tutoriel, nous avons vu quand et comment utiliser des tables externes dans Hive. Les points forts de ce tutoriel sont de créer un arrière-plan sur les tables autres que les données gérées et analysées en dehors de la Ruche.
Articles recommandés
Ceci est un guide pour la table externe dans Hive. Nous discutons ici de l’introduction de Tables externes dans la Ruche et des Fonctionnalités et des Requêtes. Vous pouvez également consulter nos autres articles connexes pour en savoir plus –
- Partitionnement dans Hive
- Carte Rejoindre dans Hive
- Types de données Hive
- Installation de la ruche
- Guide du cluster Hive Par