tutorial spark script pig hadoop apache-pig

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