DISTRIBUER PAR la clause de la RUCHE
Je ne suis pas en mesure de comprendre ce que c'DISTRIBUER PAR la clause ne dans la RUCHE. Je sais que la définition qui dit que , si nous avons de distribution PAR (ville) , ce serait envoyer chaque ville dans un autre RÉDUCTEUR mais je n'obtiens pas le même. Permettez-nous de considérer les données comme suit :
Données de la TABLE:
+----------+--------+
| username | amount |
+----------+--------+
| user_1 | 25 |
+----------+--------+
| user_1 | 53 |
+----------+--------+
| user_1 | 28 |
+----------+--------+
| user_1 | 50 |
+----------+--------+
| user_2 | 20 |
+----------+--------+
| user_2 | 50 |
+----------+--------+
| user_2 | 10 |
+----------+--------+
| user_2 | 5 |
+----------+--------+
Dire que nous avons une TABLE de données avec des colonnes nom d'utilisateur et montant.
Maintenant Si je dis -
select username,sum(amount) from data DISTRIBUTE by (name)
Ne devrait pas ce run 2 réducteurs ? Il est toujours en cours d'exécution un seul réducteur je ne sais pas pourquoi ? Je pensais que cela peut avoir à faire avec le regroupement DANS des SEAUX OU de PARTITIONNEMENT, mais j'ai tout essayé , là encore, il s'exécute une seule réducteur quelqu'un peut-il expliquer pourquoi ?
OriginalL'auteur User9523 | 2017-02-14
Vous devez vous connecter pour publier un commentaire.
La seule chose
DISTRIBUTE BY (city)
dit, c'est que les enregistrements avec le mêmecity
vont à la même réducteur. Rien d'autre.https://cwiki.apache.org/confluence/display/Hive/LanguageManual+SortBy
Une question posée par l'OP:
Pour 2 raisons:
Dans le début de la ruche
DISTRIBUTE BY
,SORT BY
etCLUSTER BY
où utilisée pour traiter les données d'une manière qui aujourd'hui se fait automatiquement (par exemple, des fonctions analytiques https://oren.lederman.name/?p=32)Vous pourriez vouloir des flux de données via un script (la Ruche "Transformer") et que vous voulez que votre script pour traiter vos données dans certains groupes et de l'ordre. Pour cela, vous pouvez utiliser
DISTRIBUTE BY
+SORT BY
ouCLUSTER BY
. AvecDISTRIBUTE BY
il est garanti que vous aurez l'ensemble du groupe dans le même réducteur. AvecSORT BY
que vous allez obtenir tous les enregistrements d'un groupe en continu.Pas de. Tout Un irait de 1 réducteur. Tous les B ira à 1 réducteur Vous n'avez aucune garantie que ceux-ci vont être différents réducteurs.
Tout à droite, de sorte que nous pouvons dire à un moment un réducteur contient seulement (1) type de ville ?
Aussi pas. Chaque enregistrement est lu par un mappeur est copié dans l'un des réducteurs, décidé par la fonction de Hachage(s) sur la distribution valeur(s), dans ce cas
city
et ce lieu seulement après que le nombre de réducteurs est décidé.Sérieusement je ne comprends pas. Alors quel est le point de cette distribution PAR ? Il n'y a aucune garantie que chacun (ville) serait aller à un autre réducteur alors pourquoi l'utiliser ?
OriginalL'auteur David דודו Markovitz
En plus de @Dudu réponse, le Distribuer Par ne distribue que les lignes entre les réducteurs qui est déterminée à partir de la taille de saisie.
Le nombre de réducteurs pour être utilisé pour une Ruche de travail sera déterminé par cette propriété
hive.exec.reducers.bytes.per.reducer
qui est liée à l'entrée.Comme de la Ruche 0.14, si l'entrée est < 256 mo de, un seul réducteur (un réducteur par 256 MO de l'entrée) sera utilisé à moins que le nombre de réducteurs est remplacé par
hive.exec.reducers.max
oumapred.reduce.tasks
propriétés.Pas de. Il est clair que le nombre des réducteurs doit être supérieur ou égal au nombre de villes afin d'avoir chaque ville sur un autre réducteur, mais rien ne la garantit. C'est une fonction de hachage et, théoriquement, vous pouvez avoir 10 villes et 100 réducteurs et encore toutes les villes seront sur un seul réducteur.
Hiii @franklinsijo les deux
hive.exec.reducers.max
etmapred.reduce.tasks
n'a pas l'air de travailler. Je veux pas. de réducteurs à 1, de sorte que tous les fichiers d'aller dans l'un réducteur et d'obtenir fusionnés en un seul. Depuis, mon tableau n'a pas de partitions, je ne suis pas en mesure d'utiliserDISTRIBUTE BY
clause d'envoyer des fichiers de partition unique dans un réducteur. Avez-vous de toute façon je peux pas. des réducteurs de 1??OriginalL'auteur franklinsijo