Question

Est-il possible de le faire? par exemple, passe à traiter, etc le nom du fichier?

Était-ce utile?

La solution

apparu dans une autre question, mais vous pouvez indiquer le paramètre d'entrée sur la ligne de commande et l'utilisation que lorsque vous chargez, par exemple:

Ligne de commande:

  

-f porc script.pig -param entrée = somefile.txt

script.pig:

  

raw = CHARGE '$ entrée' AS (...);

Notez que si vous utilisez le Web Amazon Elastic services Carte Réduire alors le « $ entrée » est ce qui est transmis au script pour toute entrée que vous fournissez.

Autres conseils

Vous pouvez utiliser ...
1. s'il y a peu de paramètres puis utilisez -param (-p)
2. s'il y a beaucoup de paramètres puis utilisez -param_file (-m)

Vous pouvez utiliser l'approche en fonction de la nature de la valeur de vos arguments de ligne de commande, j'utilise -param quand je suis développer et tester mes scripts. Une fois que le script de porc est prêt pour le traitement par lots ou en cours d'exécution à travers crontab, j'utilise -param_file de sorte que si tout changement nécessaire, je peux facilement mettre à jour le fichier params.init.

cochon homme vous montrera toutes les options disponibles.

-m, -param_file path to the parameter file
-p, -param key value pair of the form param=val

Voici un exemple de code ...

students.txt (données d'entrée)

001,Rajiv,Reddy,21,9848022337,Hyderabad
002,siddarth,Battacharya,22,9848022338,Kolkata
003,Rajesh,Khanna,22,9848022339,Delhi
004,Preethi,Agarwal,21,9848022330,Pune
005,Trupthi,Mohanthy,23,9848022336,Bhuwaneshwar
006,Archana,Mishra,23,9848022335,Chennai
007,Komal,Nayak,24,9848022334,trivendram
008,Bharathi,Nambiayar,24,9848022333,Chennai

params.init (fichier à tenir tous les paramètres)

fileName='hdfs://horton/user/jgosalia/students.txt'
cityName='Chennai'

filter.pig

students = LOAD '$fileName' USING PigStorage(',') AS (id:int, firstname:chararray, lastname:chararray, age:int, phone:chararray, city:chararray);
students = FILTER students BY city == '$cityName';
DUMP students;

OPT 1: Utilisation de params sur la ligne de commande (-param ou -p) et sortie

pig -param fileName='hdfs://horton/user/jgosalia/students.txt' -param cityName='Chennai' filter.pig

... Trimming the logs ...

(6,Archana,Mishra,23,9848022335,Chennai)
(8,Bharathi,Nambiayar,24,9848022333,Chennai)

OPT 2: Utilisation de fichier params sur la ligne de commande (ou -param_file -m) et sortie

pig -param_file params.init filter.pig

... Trimming the logs ...

(6,Archana,Mishra,23,9848022335,Chennai)
(8,Bharathi,Nambiayar,24,9848022333,Chennai)

NOTE:. Utiliser le chemin absolu pour les chemins de fichiers (à la fois en tant que paramètres et en donnant le chemin du fichier à -param_file param (-m))

Il est simple de passer des paramètres à un script PIG.

D'abord marquer vos variables chez le porc en utilisant « $ » par exemple fichier_entrée de $. Passez ensuite les paramètres que vous script à l'aide de porc -params fichier_entrée = '/ path / to / data'

pour plus d'information voir ici: http://wiki.apache.org/pig/ParameterSubstitution

Oui.

Vous pouvez passer des paramètres le long des options de commande en utilisant l'option de param de porc.

--customparam.pig
--load hdfs/local fs data 
 original = load '$input' using PigStorage('$delimiter');
--filter a specific field value into another bag  
 filtered = foreach original generate $split; 
--storing data into hdfs/local fs 
  store filtered into '$output';
  

-x -f porc customparam.pig -param entrée locale = Pig.csv -param   sortie = OUT / porc delimiter -param = "" -param scission = '$ 1'

Pour plus d'informations: vérifier

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top