Apache Pig - TOP ()

le TOP() la fonction de Pig Latin est utilisée pour obtenir le haut Ntuples d'un sac. À cette fonction, comme entrées, nous devons passer une relation, le nombre de tuples que nous voulons et le nom de la colonne dont les valeurs sont comparées. Cette fonction renverra un sac contenant les colonnes requises.

Syntaxe

Ci-dessous la syntaxe de la fonction TOP().

grunt> TOP(topN,column,relation)

Exemple

Supposons que nous ayons un fichier nommé employee_details.txt dans le répertoire HDFS /pig_data/, avec le contenu suivant.

employee_details.txt

001,Robin,22,newyork 
002,BOB,23,Kolkata 
003,Maya,23,Tokyo 
004,Sara,25,London 
005,David,23,Bhuwaneshwar 
006,Maggy,22,Chennai 
007,Robert,22,newyork 
008,Syam,23,Kolkata 
009,Mary,25,Tokyo 
010,Saran,25,London 
011,Stacy,25,Bhuwaneshwar 
012,Kelly,22,Chennai

Nous avons chargé ce fichier dans Pig avec le nom de la relation emp_data comme indiqué ci-dessous.

grunt> emp_data = LOAD 'hdfs://localhost:9000/pig_data/ employee_details.txt' USING PigStorage(',')
   as (id:int, name:chararray, age:int, city:chararray);

Regrouper la relation emp_data par âge, et stockez-le dans la relation emp_group.

grunt> emp_group = Group emp_data BY age;

Vérifier la relation emp_group en utilisant le Dump operator comme indiqué ci-dessous.

grunt> Dump emp_group;
  
(22,{(12,Kelly,22,Chennai),(7,Robert,22,newyork),(6,Maggy,22,Chennai),(1,Robin, 22,newyork)}) 
(23,{(8,Syam,23,Kolkata),(5,David,23,Bhuwaneshwar),(3,Maya,23,Tokyo),(2,BOB,23, Kolkata)}) 
(25,{(11,Stacy,25,Bhuwaneshwar),(10,Saran,25,London),(9,Mary,25,Tokyo),(4,Sara, 25,London)})

Maintenant, vous pouvez obtenir les deux premiers enregistrements de chaque groupe classés par ordre croissant (based on id) comme indiqué ci-dessous.

grunt> data_top = FOREACH emp_group { 
   top = TOP(2, 0, emp_data); 
   GENERATE top; 
}

Dans cet exemple, nous récupérons les 2 premiers tuples d'un groupe ayant un plus grand id. Puisque nous récupérons les 2 meilleurs tuples en nous basant sur leid, nous transmettons l'index du nom de la colonne id comme deuxième paramètre de la fonction TOP ().

Vérification

Vous pouvez vérifier le contenu du data_top relation utilisant le Dump opérateur comme indiqué ci-dessous.

grunt> Dump data_top;
  
({(7,Robert,22,newyork),(12,Kelly,22,Chennai)}) 
({(5,David,23,Bhuwaneshwar),(8,Syam,23,Kolkata)}) 
({(10,Saran,25,London),(11,Stacy,25,Bhuwaneshwar)})