Tags:
create new tag
, view all tags
-- 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.

Hive Bucket Join : http://henning.kropponline.de/2016/10/09/hive-join-strategies/

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.

bucket-join-hive

et https://community.hortonworks.com/questions/107217/how-to-reduce-spark-shuffling-caused-by-join-with.html

Topic revision: r1 - 2017-09-20 - CorentinSanchez
 
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2024 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback