--
CorentinSanchez - 2017-09-20
Hive
C'est une couche supplémentaire de HDFS permettant d'utiliser un langage : le
HiveQL, qui se rapproche du SQL, mais pour les bases de données distribuées.
Partitioning
PARTITIONED BY [A]
Permet de répartir une table en sous-tables réparties sur différents datanodes en grouppant les lignes qui ont un champs A identique. Fonctionne très bien pour des tables dont les valeurs du champs a sont peu nombreuses et réparties relativement uniformément.
Bucketing
CLUSTERED BY [A] IN [B] BUCKETS
Permet de répartir une table en B sous-tables réparties sur différents datanodes en calculant un hash du champs A. C'est très efficace pour obtenir une distribution homogène sur des tables dont les valeurs du champs A sont très différentes (beaucoup plus de valeurs différentes que de Buckets).
Bucketing et Schuffling
Le schuffling est le transfert de données entre les datanodes. Il ralentit les calculs, mieux vaut ne travailler que sur des données présentes sur le datanode courant (dans l'idéal).
Pour des opérations de jointure, si on a fait des buckets, il faudrait donc faire le meme nombre de buckets selon la clé de jointure pour les deux tables à joindre et espérer que pour une clé donnée, les données des deux tables correspondantes soint stockées sur le même datanode.
C'est apparement ce qui se passe heureusement.
Buckets add an additional structure to the way the data is organized across
HDFS. Entries with identical values in the columns used bucketing are stored in the same file partitions. Tables bucketed based on columns that include the join key can make advantage of Hive Bucket Joins.
The trick of Bucket Join in Hive is that the join of bucketed files having the same join key can efficiently be implemented as map-side joins. As previously explained do map-side joins impose strict constrains on the way the data needs to be organized. It needs to be sorted and partitioned identically. This is what can be achieved with bucketed Hive tables.
et
https://community.hortonworks.com/questions/107217/how-to-reduce-spark-shuffling-caused-by-join-with.html