Je sais que les deux opérations sont effectuées sur une colonne dans la table mais en quoi chaque opération est-elle différente.
Réponses
Trop de publicités?Il y a de très bonnes réponses ici. J'aimerais le garder court pour mémoriser la différence entre partition & buckets.
Vous partitionnez généralement sur une colonne moins unique. Et vous regroupez sur la colonne la plus unique.
Par exemple, si vous considérez la population mondiale avec le pays, le nom de la personne et leur identifiant biométrique comme exemple. Comme vous pouvez le deviner, le champ du pays serait la colonne moins unique et l'identifiant biométrique serait la colonne la plus unique. Donc idéalement, vous auriez besoin de partitionner la table par pays et de la regrouper par identifiant biométrique.
Utiliser des partitions dans une table Hive est fortement recommandé pour les raisons suivantes -
- L'insertion dans la table Hive devrait être plus rapide (car elle utilise plusieurs threads pour écrire des données dans les partitions)
- La requête à partir de la table Hive devrait être efficace avec une faible latence.
Exemple :-
Supposons que le fichier d'entrée (100 Go) est chargé dans une table temporaire temp-hive-table et qu'il contient des données bancaires provenant de différentes régions géographiques.
Table Hive sans partition
Insérer dans la table Hive Select * from temp-hive-table
/chemin-de-la-table-hive/part-00000-1 (taille des partitions ~ taille du bloc hdfs)
/chemin-de-la-table-hive/part-00000-2
....
/chemin-de-la-table-hive/part-00000-n
Le problème avec cette approche est qu'elle analysera toutes les données pour toute requête que vous exécutez sur cette table. Le temps de réponse sera élevé par rapport à d'autres approches où la partitionnage et le Bucking sont utilisés.
Table Hive avec partition
Insérer dans la table Hive partition(country) Select * from temp-hive-table
/chemin-de-la-table-hive/pays=US/part-00000-1 (taille du fichier ~ 10 Go)
/chemin-de-la-table-hive/pays=Canada/part-00000-2 (taille du fichier ~ 20 Go)
....
/chemin-de-la-table-hive/pays=UK/part-00000-n (taille du fichier ~ 5 Go)
Avantages - Ici, on peut accéder aux données plus rapidement lorsqu'il s'agit de la requête de données pour des transactions géographiques spécifiques. Inconvénients - L'insertion/l'interrogation de données peut être encore améliorée en divisant les données au sein de chaque partition. Voir l'option de Bucketing ci-dessous.
Table Hive avec partition et Bucketing
Remarque : Créer une table hive ..... avec "CLUSTERED BY (ColonnePartition) en 5 seaux
Insérer dans la table Hive partition(pays) Select * from temp-hive-table
/chemin-de-la-table-hive/pays=US/part-00000-1 (taille du fichier ~ 2 Go)
/chemin-de-la-table-hive/pays=US/part-00000-2 (taille du fichier ~ 2 Go)
/chemin-de-la-table-hive/pays=US/part-00000-3 (taille du fichier ~ 2 Go)
/chemin-de-la-table-hive/pays=US/part-00000-4 (taille du fichier ~ 2 Go)
/chemin-de-la-table-hive/pays=US/part-00000-5 (taille du fichier ~ 2 Go)
/chemin-de-la-table-hive/pays=Canada/part-00000-1 (taille du fichier ~ 4 Go)
/chemin-de-la-table-hive/pays=Canada/part-00000-2 (taille du fichier ~ 4 Go)
/chemin-de-la-table-hive/pays=Canada/part-00000-3 (taille du fichier ~ 4 Go)
/chemin-de-la-table-hive/pays=Canada/part-00000-4 (taille du fichier ~ 4 Go)
/chemin-de-la-table-hive/pays=Canada/part-00000-5 (taille du fichier ~ 4 Go)
....
/chemin-de-la-table-hive/pays=UK/part-00000-1 (taille du fichier ~ 1 Go)
/chemin-de-la-table-hive/pays=UK/part-00000-2 (taille du fichier ~ 1 Go)
/chemin-de-la-table-hive/pays=UK/part-00000-3 (taille du fichier ~ 1 Go)
/chemin-de-la-table-hive/pays=UK/part-00000-4 (taille du fichier ~ 1 Go)
/chemin-de-la-table-hive/pays=UK/part-00000-5 (taille du fichier ~ 1 Go)
Avantages - Insertion plus rapide. Requête plus rapide.
Inconvénients - Le Bucketing créera plus de fichiers. Il pourrait y avoir des problèmes avec de nombreux petits fichiers dans certains cas spécifiques
J'espère que cela vous aidera !!
- Réponses précédentes
- Plus de réponses