154 votes

Quelle est la différence entre le partitionnement et le bucketing d'une table dans Hive ?

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.

5voto

uriya harel Points 83

La différence est que la segmentation divise les fichiers par nom de colonne et la partition divise les fichiers en fonction d'une valeur particulière dans la table

En espérant l'avoir correctement défini

2voto

SVK Points 876

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.

1voto

Ajay Ahuja Points 557

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 !!

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X