Les tables, les partitions et les compartiments font partie de la modélisation des données Hive.
Qu'est-ce que les partitions?
Hive Partitions est un moyen d'organiser les tables en partitions en divisant les tables en différentes parties en fonction des clés de partition.
La partition est utile lorsque la table possède une ou plusieurs clés de partition. Les clés de partition sont des éléments de base pour déterminer comment les données sont stockées dans la table.
Par exemple : -
"Client ayant des données de commerce électronique qui appartiennent aux opérations en Inde dans lesquelles chaque état (38 états) est mentionné dans son ensemble. Si nous prenons la colonne d'état comme clé de partition et effectuons des partitions sur ces données en Inde dans leur ensemble, nous pouvons pour obtenir le nombre de partitions (38 partitions) qui est égal au nombre d'états (38) présents en Inde, de sorte que chaque donnée d'état puisse être visualisée séparément dans les tables de partitions.
Exemple d'extrait de code pour les partitions
- Création de la table tous les états
create table all states(state string, District string,Enrolments string)row format delimitedfields terminated by ',';
- Chargement des données dans la table créée tous les états
Load data local inpath '/home/hduser/Desktop/AllStates.csv' into table allstates;
- Création de la table de partition
create table state_part(District string,Enrolments string) PARTITIONED BY(state string);
-
Pour la partition, nous devons définir cette propriété
set hive.exec.dynamic.partition.mode=nonstrict
- Chargement des données dans la table de partition
INSERT OVERWRITE TABLE state_part PARTITION(state)SELECT district,enrolments,state from allstates;
- Traitement et formation réels des tables de partition en fonction de l'état en tant que clé de partition
- Il y aura 38 sorties de partition dans le stockage HDFS avec le nom de fichier comme nom d'état. Nous allons vérifier cela dans cette étape
Les captures d'écran suivantes vous montreront l'exécution du code mentionné ci-dessus
À partir du code ci-dessus, nous faisons les choses suivantes
- Création d'un tableau tous les états avec 3 noms de colonnes tels que l'état, le district et l'inscription
- Chargement des données dans la table tous les états
- Création de la table de partition avec état comme clé de partition
- Dans cette étape Définition du mode de partition comme non strict (ce mode activera le mode de partition dynamique)
- Chargement des données dans la partition tablestate_part
- Traitement et formation réels des tables de partition en fonction de l'état en tant que clé de partition
- Il y aura 38 sorties de partition dans le stockage HDFS avec le nom de fichier comme nom d'état. Nous allons vérifier cela dans cette étape. Dans cette étape, nous voyons les 38 sorties de partition dans HDFS
Qu'est-ce que les seaux?
Les compartiments dans la ruche sont utilisés pour séparer les données de table de la ruche en plusieurs fichiers ou répertoires. il est utilisé pour des requêtes efficaces.
- Les données, c'est-à-dire présentes dans ces partitions, peuvent être divisées en compartiments
- La division est effectuée en fonction du hachage de colonnes particulières que nous avons sélectionnées dans le tableau.
- Les buckets utilisent une forme d'algorithme de hachage au back-end pour lire chaque enregistrement et le placer dans des buckets
- Dans Hive, nous devons activer les buckets en utilisant set.hive.enforce.bucketing = true;
Étape 1) Création du bucket comme indiqué ci-dessous.
À partir de la capture d'écran ci-dessus
- Nous créons sample_bucket avec des noms de colonnes tels que prénom, id_travail, département, salaire et pays
- Nous créons 4 seaux par-dessus.
- Une fois que les données sont chargées automatiquement, placez les données dans 4 seaux
Étape 2) Chargement des données dans le seau d'échantillons de table
En supposant que la "table des employés" a déjà été créée dans le système Hive. Dans cette étape, nous verrons le chargement de la table Données de la table des employés dans un échantillon de table.
Avant de commencer à déplacer les données des employés dans des buckets, assurez-vous qu'elles contiennent des noms de colonnes tels que prénom, id_travail, service, salaire et pays.
Ici, nous chargeons des données dans un échantillon de compartiment à partir de la table des employés.
Étape 3) Affichage de 4 buckets créés à l'étape 1
À partir de la capture d'écran ci-dessus, nous pouvons voir que les données de la table des employés sont transférées dans 4 buckets créés à l'étape 1.