Types de données Hive : comment créer et supprimer des bases de données dans Hive
⚡ Résumé intelligent
Les types de données Hive définissent ce que chaque colonne de table peut contenir, et les commandes CREATE DATABASE et DROP DATABASE configurent ou suppriment l'espace de noms dans lequel ces tables résident à l'intérieur du métastore Hive.

Les types de données sont des éléments essentiels du langage de requêtes Hive et de la modélisation des données. Pour définir les types de colonnes d'une table, il est indispensable de connaître les types de données et leur utilisation.
Ce qui suit donne un bref aperçu de certains types de données présents dans Hive :
- Types numériques
- Types de chaîne
- Types de date/heure
- Types complexes
Types de données dans Hive
Chaque colonne Hive est déclarée avec l'un des types ci-dessous. Les types primitifs apparaissent en premier, suivis des types complexes qui peuvent contenir plusieurs valeurs dans une même colonne.
Types de données numériques Hive
Les colonnes numériques peuvent contenir de un à huit octets ; choisir le type le plus petit compatible avec les valeurs permet donc de réduire les coûts de stockage et d’analyse.
| Type | Allocation de mémoire |
|---|---|
| PETIT INT | Entier signé de 1 octets (-128 127 à ) |
| INTEMPLE | Entier signé de 2 octets (-32,768 32,767 à ) |
| INT | Entier signé de 4 octets (-2,147,483,648 2,147,483,647 à ) |
| GRAND | Entier signé de 8 octets (-9,223,372,036,854,775,808 9,223,372,036,854,775,807 à ) |
| FLOAT | Nombre à virgule flottante simple précision sur 4 octets |
| DOUBLE | nombre à virgule flottante double précision de 8 octets |
| DÉCIMAL | On peut définir la précision et l'échelle dans ce type, sous la forme DECIMAL(précision, échelle). Si elles sont omises, Hive utilise DECIMAL(10,0). |
Types de données de chaîne Hive
Les colonnes de caractères se présentent sous trois formes, et la différence réside dans le fait que Hive impose ou non une longueur déclarée.
| Type | longueur du câble |
|---|---|
| CARBONISER | Longueur fixe, jusqu'à 255 caractères. Les valeurs plus courtes sont complétées par des espaces. |
| VARCHAR | De 1 à 65 535 caractères. Une valeur plus longue est tronquée sans avertissement. |
| STRING | Nous pouvons définir la longueur ici (sans limite). |
Types de données date/heure de la ruche
Les colonnes temporelles sont stockées sans décalage horaire, un point à garder à l'esprit avant de comparer des valeurs écrites par différents clusters.
| Type | Utilisation |
|---|---|
| Horodatage | Prend en charge le traditionnel Unix horodatage avec précision à la nanoseconde en option |
| Date | Il est au format AAAA-MM-JJ. La plage de valeurs prises en charge pour le type Date est de 0000-01-01 à 9999-12-31, selon la prise en charge par la primitive Java Type de date |
Types de données divers de Hive
Deux autres primitives se situent en dehors des familles numériques, de chaînes de caractères et de dates, mais apparaissent régulièrement dans des schémas réels.
| Type | Utilisation |
|---|---|
| Booléen | Stocke vrai ou faux |
| BINARY | Stocke un tableau d'octets, ce qui empêche le contenu brut d'être stocké dans une colonne STRING. |
Types de données complexes Hive
Les types complexes imbriquent les valeurs dans une seule colonne, ce qui élimine la jointure supplémentaire nécessaire à une conception relationnelle.
| Type | Utilisation |
|---|---|
| Arrays | TABLEAU Les valeurs négatives et les expressions non constantes ne sont pas autorisées |
| Map | CARTE Les valeurs négatives et les expressions non constantes ne sont pas autorisées |
| Structures | STRUCT |
| syndicat | UNIONTYPE |
Exemple de types de données complexes Hive
Le tableau ci-dessus présente la forme de déclaration. L'instruction ci-dessous regroupe trois types complexes dans un seul tableau afin de visualiser simultanément les clauses de délimitation et la syntaxe d'accès.
CREATE TABLE employees ( name STRING, skills ARRAY<STRING>, deductions MAP<STRING, FLOAT>, address STRUCT<street:STRING, city:STRING, pin:INT> ) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' COLLECTION ITEMS TERMINATED BY ',' MAP KEYS TERMINATED BY ':' LINES TERMINATED BY '\n' STORED AS TEXTFILE;
Trois délimiteurs distincts sont nécessaires : un entre les colonnes, un deuxième entre les éléments d’un tableau ou d’une structure, et un troisième entre la clé et la valeur d’une carte. Une fois la table créée, chaque colonne complexe est lue à l’aide de son propre accesseur.
SELECT name, skills[0], deductions['tax'], address.city FROM employees;
Le tableau ci-dessous récapitule quel accesseur appartient à quel type.
| Type | Comment une valeur est lue |
|---|---|
| TABLEAU | Index à base zéro, tel que compétences[0] |
| CARTE | Recherche par clé entre crochets, par exemple déductions['tax'] |
| STRUCTURE | Notation pointée sur le nom du champ, par exemple adresse.ville |
| UNIONTYPE | Rarement utilisé, car la prise en charge des requêtes est restée incomplète. |
Les types complexes peuvent être imbriqués, donc ARRAY > est une déclaration de colonne valide. Une fois la structure des colonnes définie, les tables sont construites à l'aide des instructions décrites dans Tables Hive : création, modification et suppression.
Comment créer et supprimer des bases de données dans Hive
Dans Hive, une base de données est simplement un espace de noms qui regroupe des tables ; c’est donc le premier objet à créer avant toute manipulation de tables. Voici les étapes à suivre pour créer et supprimer des bases de données dans Hive.
Étape 1) Créer une base de données dans Hive
Pour créer une base de données dans Hive Shell, nous devons utiliser la commande dont la syntaxe est indiquée ci-dessous :
syntaxe:
Create database <DatabaseName>
Exemple : Créer la base de données « guru99 »
La capture d'écran ci-dessous montre l'instruction de création suivie d'une commande d'affichage listant toutes les bases de données du cluster.
D'après la capture d'écran ci-dessus, nous faisons deux choses :
- Création de la base de données « guru99 » dans Hive
- Affichage des bases de données existantes à l'aide de la commande « show »
Sur le même écran, la base de données « guru99 » s'affiche à la fin lorsque nous exécutons la commande show, ce qui signifie que la base de données « guru99 » a été créée avec succès.
Étape 2) Déposer la base de données dans Hive
Pour la chuteping Dans l'interface Hive, pour supprimer une base de données, il faut utiliser la commande « drop » comme indiqué dans la syntaxe ci-dessous :
syntaxe:
Drop database <DatabaseName>
Exemple : Supprimer la base de données guru99
Dans la capture d'écran suivante, l'instruction DROP s'exécute en premier, et la commande SHOW qui suit n'affiche plus la base de données.
Dans la capture d'écran ci-dessus, nous faisons deux choses :
- Nous sommes en train de lâcherping base de données 'guru99' de Hive
- Vérification croisée avec la commande « show »
Sur le même écran, après avoir vérifié les bases de données avec la commande show, la base de données « guru99 » n'apparaît pas dans Hive. Nous pouvons donc confirmer que la base de données « guru99 » a été supprimée.
Commandes de la base de données Hive : USE, DESCRIBE, SHOW et ALTER DATABASE
Les deux instructions ci-dessus utilisent leur forme la plus courte. La syntaxe documentée comporte des clauses optionnelles qui déterminent l'emplacement des fichiers et le comportement du système lorsque le nom est déjà utilisé.
CREATE DATABASE [IF NOT EXISTS] database_name [COMMENT database_comment] [LOCATION hdfs_path] [WITH DBPROPERTIES (property_name=property_value, ...)];
DROP DATABASE [IF EXISTS] database_name [RESTRICT|CASCADE];
Les mots clés DATABASE et SCHEMA sont interchangeables ; CREATE SCHEMA et CREATE DATABASE font donc exactement la même chose. Les autres commandes permettent de gérer les opérations courantes avec un espace de noms.
| Command | Ce qu'il fait |
|---|---|
| AFFICHER LES BASES DE DONNÉES; | Liste toutes les bases de données enregistrées dans le métastore |
| USE nom_base de données ; | Définit la base de données actuelle afin que les noms de tables n'aient pas besoin de préfixe. |
| DÉCRIRE LA BASE DE DONNÉES nom_base_de_données; | Signale le commentaire, l'emplacement HDFS et le propriétaire |
| DÉCRIRE LA BASE DE DONNÉES ÉTENDU nom_de_la_base_de_données ; | Ajoute les paires clé-valeur DBPROPERTIES à cette sortie |
| ALTER DATABASE nom_de_la_base_de_données SET DBPROPERTIES (…) ; | Ajoute ou remplace des propriétés de métadonnées |
| ALTER DATABASE nom_de_la_base_de_données DÉFINIR PROPRIÉTAIRE UTILISATEUR nom_d'utilisateur; | Transfère la propriété à un autre utilisateur ou rôle |
| ALTER DATABASE nom_base_de_données SET LOCATION chemin_hdfs; | Modifie le chemin d'accès utilisé par les tables créées à partir de ce moment-là. |
Deux valeurs par défaut sont à retenir. Sans clause LOCATION, les fichiers sont placés dans le répertoire de l'entrepôt de données, généralement /user/hive/warehouse/database_name.db. Sans IF EXISTS, une suppression d'un fichier portant sur un nom introuvable génère une erreur au lieu de se dérouler sans incident. Ces deux paramètres sont stockés dans le fichier de configuration. Métastore Hive.
Conversion des types de données Hive et erreurs courantes
Les types ne sont pas toujours utilisés exactement comme déclarés. Hive élargit automatiquement une valeur lorsqu'aucune information ne risque d'être perdue, et laisse toutes les autres situations à une conversion explicite.
- L'élargissement implicite suit la chaîne TINYINT à SMALLINT à INT à BIGINT à FLOAT à DOUBLE, et une STRING contenant des chiffres est promue en DOUBLE.
- Le rétrécissement ne se fait jamais automatiquement, donc une valeur DOUBLE affectée à une colonne INT nécessite une conversion écrite.
- La fonction CAST effectue cette conversion écrite et renvoie NULL plutôt qu'une erreur lorsque la valeur ne peut pas être convertie.
SELECT CAST(salary AS DECIMAL(10,2)) FROM employees;
Les erreurs ci-dessous expliquent la plupart des surprises que rencontrent les débutants lors de leur premier schéma.
| Symptôme | Cause et solution |
|---|---|
| La suppression échoue alors que la base de données contient encore des tables. | RESTRICT est la valeur par défaut. Ajoutez CASCADE pour supprimer les tables concernées. |
| Une longue ficelle arrive raccourcie | VARCHAR tronque silencieusement les données au-delà de sa longueur déclarée. Utilisez STRING lorsqu'aucune limite n'est souhaitée. |
| Une colonne affiche la valeur NULL après une conversion | CAST n'a pas pu analyser la valeur. Vérifiez les données sources avant d'élargir le type. |
| La valeur des devises perd de son paise ou de ses centimes | DECIMAL sans arguments signifie DECIMAL(10,0). Indiquez explicitement l'échelle. |
| Deux dates d'apparence identique ne correspondent jamais | Une colonne de type STRING et une colonne de type DATE sont de types différents. Il convient de convertir l'un des deux types avant de les comparer. |
Une fois que les types de données se comportent correctement, l'étape suivante consiste à charger et à interroger les données elles-mêmes, ce qui est traité dans Requêtes Hive avec Order By, Group By et Cluster By.


