Création, modification et suppression de tables Hive : exemples

⚡ Résumé intelligent

Création, modification et abandonping Les tables dans Apache Hive utilisent un langage DDL de type SQL familier, mais le résultat dépend du fait que la table soit interne, appartenant à Hive, ou externe, qui décrit simplement des fichiers.

  • 🧱 CRÉER UN TABLEAU : Une seule instruction définit les colonnes, le format des lignes et, éventuellement, l'emplacement de stockage d'une table Hive.
  • 🏷️ MODIFIER TABLE: RENAME modifie le nom de la table, et ADD COLUMNS ou CHANGE COLUMN modifient le schéma sans recharger les données.
  • 🇧🇷 TABLEAU DE DESCENTE : Goutteping Une table interne supprime à la fois le schéma et les données, tandis qu'une suppressionping Une table externe supprime uniquement les métadonnées.
  • (I.e. Propriété interne : Une table interne ou gérée se trouve dans le répertoire de l'entrepôt de données et Hive contrôle l'intégralité de son cycle de vie.
  • 🔗 Référence externe : Une table externe indique les fichiers que d'autres outils lisent également, afin que ces fichiers survivent à la suppression.
  • ???? Vérifiez le type : La commande DESCRIBE FORMATTED indique MANAGED_TABLE ou EXTERNAL_TABLE, ce qui élimine toute incertitude avant une suppression.

Commandes Hive CREATE, ALTER et DROP TABLE avec exemples

Les opérations sur les tables telles que la création, la modification et la suppressionping Ce tutoriel vous permettra d'observer les tables Hive. Chaque opération est d'abord présentée sous forme de session en direct, puis sous forme d'instruction réutilisable.

Comment créer, modifier et supprimer une table dans Hive

Dans la capture d'écran ci-dessous, nous créons une table avec des colonnes et modifions le nom de la table.

  1. Création de la table guru_sample avec deux noms de colonnes tels que « empid » et « empname »
  2. Affichage des tables présentes dans la base de données guru99
  3. guru_sample s'affiche sous les tableaux
  4. Modification de la table « guru_sample » en « guru_sampleNew »
  5. Là encore, lorsque vous exécuterez la commande « show », le nouveau nom guru_sampleNew s'affichera.

La session ci-dessous exécute les cinq étapes dans l'ordre. ruche> L'invite, et les deux appels SHOW TABLES avant et après le renommage, rendent l'effet visible.

Session Hive créant guru_sample et la renommant en guru_sampleNew

Goutteping tableau guru_sampleNouveau :

Une simple instruction DROP TABLE supprime la table renommée, et Hive répond par OK.

Chute de coquille de rucheping la table guru_sampleNew avec une réponse OK

Syntaxe et clauses courantes de la fonction CREATE TABLE de Hive

L'exemple ci-dessus utilise la forme la plus courte possible. L'instruction documentée accepte plusieurs clauses facultatives, et chacune d'elles modifie un paramètre laissé par défaut dans l'exemple.

CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS] [db_name.]table_name
  [(col_name data_type [COMMENT col_comment], ...)]
  [COMMENT table_comment]
  [PARTITIONED BY (col_name data_type, ...)]
  [CLUSTERED BY (col_name, ...) INTO num_buckets BUCKETS]
  [ROW FORMAT row_format]
  [STORED AS file_format]
  [LOCATION hdfs_path]
  [TBLPROPERTIES (property_name=property_value, ...)];
Clause Ce qu'il contrôle
EXTERNE Crée une table externe, donc DROP laisse les fichiers de données en place.
TEMPORAIRE Crée un tableau temporaire qui disparaît à la fin de la session.
S'IL N'EXISTE PAS Supprime l'erreur lorsqu'une table portant ce nom existe déjà.
PARTITIONNÉ PAR Divise la table en un répertoire par valeur de clé
CLASSÉS PAR … DANS n SEAUX Hacher les lignes dans un nombre fixe de fichiers
FORMAT LIGNE / STOCKÉ SOUS Définit le délimiteur ou SerDe et le format de fichier, tel que TEXTFILE, ORC ou Parquet.
EMPLACEMENT Indique un chemin HDFS spécifique dans la table, au lieu du chemin par défaut de l'entrepôt de données.
TBLPROPERTIES Ajoute des paires clé-valeur de métadonnées, y compris external.table.purge

Une forme apparentée, CRÉER UNE TABLE nouvelle_table COMME la table_existante, copie un schéma sans copier aucune ligne. Les clauses structurelles telles que PARTITIONED BY et CLUSTERED BY sont traitées en détail dans le guide de Partitions et compartiments Hive.

Types de tables et leur utilisation

En ce qui concerne les tables, leur création est identique à celle des bases de données relationnelles traditionnelles. Les fonctionnalités telles que le filtrage et les jointures peuvent être appliquées aux tables.

Hive gère deux types de structures de tables, les tables internes et les tables externes, en fonction du chargement et de la conception du schéma. RucheCe choix n'est pas purement cosmétique : il détermine à qui appartiennent les fichiers de données et ce qu'il advient de ces derniers lorsque la table est supprimée.

Tables internes dans Hive

  • Les tables internes sont par nature étroitement liées. Dans ce type de table, il faut d'abord créer la table puis charger les données.
  • On peut appeler cela des données sur un schéma.
  • Par goutteping Cette table, données et schéma compris, sera supprimée.
  • L'emplacement stocké de cette table sera dans /user/hive/warehouse.
  • Les tables internes sont également appelées tables gérées, et seules elles prennent en charge les transactions TRUNCATE, ARCHIVE, MERGE, CONCATENATE et ACID.

Quand choisir une table interne ?

  • Si les données de traitement sont disponibles dans le système de fichiers local
  • Si nous voulons que Hive gère le cycle de vie complet des données, y compris la suppression

Exemple d'extrait de code pour la table interne

  1. Pour créer la table interne
     Hive>CREATE TABLE guruhive_internaltable (id INT,Name STRING);
    	 Row format delimited 
    	 Fields terminated by '\t';
  2. Charger les données dans la table interne
        Hive>LOAD DATA INPATH '/user/guru99hive/data.txt' INTO table guruhive_internaltable;
  3. Afficher le contenu du tableau
        Hive>select * from guruhive_internaltable;
  4. Pour supprimer la table interne
        Hive>DROP TABLE guruhive_internaltable;

Si vous supprimez la table guruhive_internaltable, ses métadonnées et ses données seront effacées de Hive. Sauf si l'option PURGE est spécifiée, les fichiers seront déplacés vers la corbeille HDFS au lieu d'être supprimés immédiatement.

La capture d'écran suivante nous permet d'observer le résultat des quatre instructions d'une même session, se terminant par une suppression réussie.

Création, chargement, interrogation et suppression de sessions Hiveping guruhive_internaltable

Dans le code ci-dessus et d'après la capture d'écran, nous effectuons les opérations suivantes :

  • Créer la table interne
  • Charger les données dans la table interne
  • Afficher le contenu du tableau
  • Pour supprimer la table interne

Tables externes dans Hive

  • La table externe est faiblement couplée. Les données seront disponibles dans HDFS. La table sera créée à partir des données HDFS.
  • Autrement dit, on peut dire qu'il s'agit de créer un schéma à partir des données.
  • Au moment de la chuteping La table ne perd que le schéma ; les données resteront disponibles dans HDFS comme auparavant.
  • Les tables externes offrent la possibilité de créer plusieurs schémas pour les données stockées dans HDFS au lieu de supprimer les données à chaque fois que le schéma est mis à jour.
  • À partir de Hive 4.0.0, définir la propriété de table external.table.purge sur true permet à DROP de supprimer également les données.

Quand choisir une table externe ?

  • Si les données de traitement sont disponibles dans HDFS
  • Utile lorsque les fichiers sont utilisés en dehors de Hive

Exemple d'extrait de code pour une table externe

  1. Créer une table externe
    Hive>CREATE EXTERNAL TABLE guruhive_external(id INT,Name STRING)
    	 Row format delimited
    	 Fields terminated by '\t'
    	 LOCATION '/user/guru99hive/guruhive_external';
  2. Si nous ne spécifions pas l'emplacement lors de la création de la table, nous pouvons charger les données manuellement.
        Hive>LOAD DATA INPATH '/user/guru99hive/data.txt' INTO TABLE guruhive_external;
  3. Afficher le contenu du tableau
      Hive>select * from guruhive_external;
  4. Pour supprimer la table externe
      Hive>DROP TABLE guruhive_external;

La capture d'écran ci-dessous illustre le résultat. Notez que la suppression finale ne concerne que le schéma ; le fichier situé sous le chemin LOCATION reste intact.

Création, chargement, interrogation et suppression de sessions Hiveping guruhive_externe

Dans le code ci-dessus, nous effectuons les opérations suivantes :

  • Créer la table externe
  • Charger les données dans une table externe
  • Afficher le contenu du tableau
  • Goutteping table externe

Différence entre les tables internes et externes

Fonctionnalité Interne Externe
Programme Données sur le schéma Schéma sur les données
Emplacement de stockage /utilisateur/ruche/entrepôt Emplacement HDFS fourni par LOCATION
Disponibilité des données Dans le système de fichiers local Au sein de HDFS
Effet de la chute Supprime le schéma et les données Supprime uniquement le schéma, sauf si external.table.purge est vrai.
Prise en charge de TRUNCATE Appareils Non pris en charge
Transactions ACID Appareils Non pris en charge

Le Documentation Apache Hive La règle est claire : Hive part du principe qu’il est propriétaire des données des tables gérées et qu’il ne l’est pas pour les tables externes, et toutes les différences mentionnées ci-dessus découlent de cette unique hypothèse.

Référence des commandes ALTER TABLE et DROP TABLE

Les captures d'écran ci-dessus montrent uniquement un renommage et une suppression. Ce sont les opérations qu'un praticien effectue le plus souvent sur une table existante.

Déclaration Interet
ALTER TABLE nom_table RENOMMER EN nouveau_nom; Renomme la table ; pour une table gérée, cela déplace également son répertoire HDFS.
ALTER TABLE nom_table ADD COLUMNS (nom_colonne type_données); Ajoute une ou plusieurs colonnes à la fin du schéma
ALTER TABLE nom_table CHANGER COLONNE ancien_nom nouveau_nom type_données; Renomme une colonne ou modifie son type
ALTER TABLE nom_table REPLACE COLUMNS (…); Remplace toute la liste des colonnes par une nouvelle.
ALTER TABLE nom_table SET TBLPROPERTIES ('EXTERNAL'='TRUE'); Convertit une table gérée en table externe, et inverse la valeur de FALSE.
DROP TABLE [IF EXISTS] nom_table [PURGE]; Supprime la table ; la commande PURGE ignore le dossier Corbeille, les données ne peuvent donc pas être récupérées.
TRONQUER [TABLE] nom_table; Supprime toutes les lignes mais conserve le schéma ; tables gérées uniquement

Deux mécanismes de sécurité méritent d'être intégrés à tout script. IF EXISTS empêche l'échec d'une suppression sur une table déjà supprimée, et DESCRIBE FORMATTED vérifie si la cible est MANAGED_TABLE ou EXTERNAL_TABLE avant l'exécution de la suppression.

FAQ

Exécutez la commande DESCRIBE FORMATTED nom_de_la_table. La ligne Type de table indique s'il s'agit de MANAGED_TABLE ou d'EXTERNAL_TABLE. Vérifier cela avant une suppression est la méthode la plus économique pour éviter de supprimer des données encore utilisées par d'autres tâches.

Oui. La commande ALTER TABLE table_name SET TBLPROPERTIES ('EXTERNAL'='TRUE') inverse le type dans le métastore, et FALSE le rétablit. Les fichiers de données restent inchangés ; aucun rechargement n'est donc nécessaire.

Normalement non, seule l'entrée du metastore est supprimée. Cependant, à partir de Hive 4.0.0, les données d'une table externe dont la propriété `external.table.purge` est définie sur `true` sont également supprimées par la commande `DROP`. Il est donc conseillé de vérifier les propriétés au préalable.

Une simple commande CREATE TABLE crée désormais par défaut une table ORC transactionnelle et gérée, et non plus une simple table de texte. L'ajout du mot-clé EXTERNAL permet de conserver l'ancien comportement, non ACID, sur un cluster Hive 3.

La commande TRUNCATE supprime toutes les lignes mais conserve le schéma ; elle ne fonctionne que sur les tables gérées. La commande DROP supprime également le schéma. TRUNCATE est le choix le plus sûr lorsque la définition de la table doit être conservée après un rechargement.

Non. Hive convertit les identifiants en minuscules dans le metastore ; ainsi, GURU_SAMPLE et guru_sample font référence à la même table. Les valeurs de type chaîne dans les données restent sensibles à la casse, ce qui explique pourquoi une comparaison WHERE peut encore manquer des lignes.

Oui. Les fonctionnalités d'apprentissage automatique des outils de catalogue analysent la cardinalité des colonnes, les taux de valeurs nulles et les modèles de requêtes, puis proposent des types de données, des formats de fichiers et des clés de partition. Considérez le résultat comme une ébauche, car le modèle ne peut pas visualiser les charges de travail planifiées.

Copilot complète les instructions CREATE, ALTER et DROP à partir d'un court commentaire, et les assistants agents peuvent générer un script de migration complet. RevVérifiez le mot-clé EXTERNAL et toute option PURGE, car une mauvaise estimation à ce niveau peut supprimer des données réelles.

Résumez cet article avec :