pour obtenir la valeur max dans une ligne de cochon
pour obtenir une valeur max de cochon:
étudiant(rollno,marques)
rollno. marks
1 24
2 26
3 50
4 30
5 35
sortie req: max les marques de rouleau no.
de sortie:
3 50
supposons que A contient les valeurs de la table des étudiants
comment obtenir rollno. marqué max marques
J'ai essayé ceci:
B = GROUP A BY rollno
C = foreach B generate group , max( A.marks);
mais il est issu de tous les enregistrements quelqu'un peut-il m'aider dans ce cochon
Vous devez vous connecter pour publier un commentaire.
Le plus lisible serait de
ORDER
vos données, puis cliquez sur le haut dossier avecLIMIT 1
:Mais ce n'est pas très efficace en termes de nombre de tâches MapReduce ce Cochon va générer pour l'accomplir. Vous avez une carte seule travail pour charger les données, l'autre à l'échantillon, il (requis par
ORDER BY
), une autre pour en faire le tri, et un dernier pour effectuer leLIMIT
et de sortie. 4 emplois pour cette simple tâche. Il m'a fallu 1:54 à l'exécuter, et pratiquement tout le temps qui a été dans MapReduce frais généraux.Mais si votre entrée n'est pas trop grande, vous pouvez simplement utiliser un foreach imbriquée, et puis tout ce travail aura lieu dans un seul réducteur, qui bien que pas aussi évolutive, sera beaucoup plus rapide que l'utilisation de MapReduce pour chaque étape. Groupe tout en un seul dossier, puis d'utiliser le foreach imbriquée:
Ce seulement utilisé une tâche de MapReduce, et a 0:35.
Bien sûr, si vos données est suffisamment petite pour que MapReduce surcharge de matière, de Porc peut-être pas le bon outil pour ce que vous faites. Mais si vous êtes de la génération d'un grand nombre d'emplois pour une petite quantité de données, et vous avez besoin d'utiliser Cochon, il vaut la peine d'essayer d'utiliser le foreach imbriquée.
selon ma compréhension, vous avez besoin d'une seule rangée avec max marques et rouleau no.
Alors vous devez trier rollno par ordre décroissant et prendre la ligne du haut, avec une limite de mot-clé comme ci-dessous
c'est de travailler pour moi -