Hive - Partitionnement

Hive organise les tables en partitions. C'est un moyen de diviser une table en parties liées en fonction des valeurs de colonnes partitionnées telles que la date, la ville et le département. En utilisant la partition, il est facile d'interroger une partie des données.

Les tables ou partitions sont subdivisées en buckets,pour fournir une structure supplémentaire aux données qui peuvent être utilisées pour une interrogation plus efficace. Le compartimentage fonctionne en fonction de la valeur de la fonction de hachage d'une colonne d'une table.

Par exemple, une table nommée Tab1contient des données sur les employés telles que l'identifiant, le nom, le service et le yoj (c'est-à-dire l'année de l'adhésion). Supposons que vous ayez besoin de récupérer les détails de tous les employés qui se sont joints en 2012. Une requête recherche dans toute la table les informations requises. Cependant, si vous partitionnez les données des employés avec l'année et les stockez dans un fichier séparé, cela réduit le temps de traitement des requêtes. L'exemple suivant montre comment partitionner un fichier et ses données:

Le fichier suivant contient le tableau des données sur l'emploi.

/ tab1 / employeedata / file1

id, name, dept, yoj
1, gopal, TP, 2012
2, kiran, HR, 2012
3, kaleel,SC, 2013
4, Prasanth, SC, 2013

Les données ci-dessus sont partitionnées en deux fichiers en utilisant l'année.

/ tab1 / employeedata / 2012 / file2

1, gopal, TP, 2012
2, kiran, HR, 2012

/ tab1 / employeedata / 2013 / file3

3, kaleel,SC, 2013
4, Prasanth, SC, 2013

Ajouter une partition

Nous pouvons ajouter des partitions à une table en modifiant la table. Supposons que nous ayons une table appeléeemployee avec des champs tels que Id, Nom, Salaire, Désignation, Département et yoj.

Syntaxe:

ALTER TABLE table_name ADD [IF NOT EXISTS] PARTITION partition_spec
[LOCATION 'location1'] partition_spec [LOCATION 'location2'] ...;

partition_spec:
: (p_column = p_col_value, p_column = p_col_value, ...)

La requête suivante est utilisée pour ajouter une partition à la table des employés.

hive> ALTER TABLE employee
> ADD PARTITION (year=’2012’)
> location '/2012/part2012';

Renommer une partition

La syntaxe de cette commande est la suivante.

ALTER TABLE table_name PARTITION partition_spec RENAME TO PARTITION partition_spec;

La requête suivante est utilisée pour renommer une partition:

hive> ALTER TABLE employee PARTITION (year=’1203’)
   > RENAME TO PARTITION (Yoj=’1203’);

Supprimer une partition

La syntaxe suivante est utilisée pour supprimer une partition:

ALTER TABLE table_name DROP [IF EXISTS] PARTITION partition_spec, PARTITION partition_spec,...;

La requête suivante est utilisée pour supprimer une partition:

hive> ALTER TABLE employee DROP [IF EXISTS]
   > PARTITION (year=’1203’);