hadoop - spark - pig script
Hadoop Pig: pasando los argumentos de la lĂnea de comando (4)
Es simple pasar los parámetros a un script PIG.
Primero marque sus variables en pig usando ''$'' por ejemplo $ input_file. A continuación, transmita los parámetros a la secuencia de comandos utilizando pig -params input_file = ''/ path / to / data''
para obtener más información, consulte aquí: http://wiki.apache.org/pig/ParameterSubstitution
¿Hay alguna forma de hacer esto? por ejemplo, pasar el nombre del archivo para ser procesado, etc.
Esto apareció en otra pregunta , pero puede indicar el parámetro de entrada en la línea de comando y usarlo cuando está cargando, por ejemplo:
Línea de comando:
pig -f script.pig -param input = somefile.txt
script.pig:
raw = LOAD ''$ input'' AS (...);
Tenga en cuenta que si está utilizando Amazon Web Services Elastic Map Reduce, entonces la ''$ input'' es lo que se pasa al script para cualquier entrada que proporcione.
Puedes usar ...
1. si hay pocos parámetros, use -param (-p)
2. si hay muchos parámetros, use -param_file (-m)
Puede utilizar cualquiera de los enfoques dependiendo de la naturaleza del valor de los argumentos de su línea de comando, yo uso -param cuando estoy desarrollando y probando mis scripts. Una vez que la secuencia de comandos pig está lista para el procesamiento por lotes o se ejecuta a través de crontab, uso -param_file para que, si se requiere algún cambio, pueda actualizar fácilmente el archivo params.init.
hombre cerdo le mostrará todas las opciones disponibles.
-m, -param_file path to the parameter file
-p, -param key value pair of the form param=val
Aquí está el código de muestra ...
students.txt (datos de entrada)
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 (archivo para contener todos los parámetros)
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: Usar parámetros en la línea de comandos (-param o -p) & Salida
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: Usar el archivo params en la línea de comandos (-param_file o -m) & Output
pig -param_file params.init filter.pig
... Trimming the logs ...
(6,Archana,Mishra,23,9848022335,Chennai)
(8,Bharathi,Nambiayar,24,9848022333,Chennai)
NOTA: utilice la ruta absoluta para las rutas de archivos (como parámetros y cuando proporcione la ruta del archivo param a -param_file (-m)).
Sí.
Puede pasar parámetros a lo largo de las opciones de línea de comando usando la opción param
del cerdo.
--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'';
pig -x local -f customparam.pig -param input = Pig.csv -param output = OUT / pig -param delimiter = "," -param split = ''$ 1''
Para más información: mira esto