Apache Pig: ejecución de scripts

Aquí, en este capítulo, veremos cómo ejecutar scripts de Apache Pig en modo por lotes.

Comentarios en Pig Script

Mientras escribimos un script en un archivo, podemos incluir comentarios en él como se muestra a continuación.

Comentarios de varias líneas

Comenzaremos los comentarios de varias líneas con '/ *' y los terminaremos con '* /'.

/* These are the multi-line comments 
  In the pig script */

Comentarios de una sola línea

Comenzaremos los comentarios de una sola línea con '-'.

--we can write single line comments like this.

Ejecución de Pig Script en modo por lotes

Mientras ejecuta las declaraciones de Apache Pig en modo por lotes, siga los pasos que se indican a continuación.

Paso 1

Escriba todas las declaraciones de Pig Latin necesarias en un solo archivo. Podemos escribir todas las instrucciones y comandos de Pig Latin en un solo archivo y guardarlo como.pig archivo.

Paso 2

Ejecute el script de Apache Pig. Puede ejecutar el script Pig desde el shell (Linux) como se muestra a continuación.

Modo local Modo MapReduce
$ cerdo -x local Sample_script.pig $ cerdo -x mapreduce Sample_script.pig

También puede ejecutarlo desde el shell de Grunt utilizando el comando exec como se muestra a continuación.

grunt> exec /sample_script.pig

Ejecución de un script Pig desde HDFS

También podemos ejecutar un script de Pig que reside en el HDFS. Supongamos que hay un guión de Pig con el nombreSample_script.pig en el directorio HDFS llamado /pig_data/. Podemos ejecutarlo como se muestra a continuación.

$ pig -x mapreduce hdfs://localhost:9000/pig_data/Sample_script.pig

Ejemplo

Supongamos que tenemos un archivo student_details.txt en HDFS con el siguiente contenido.

student_details.txt

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

También tenemos un script de muestra con el nombre sample_script.pig, en el mismo directorio HDFS. Este archivo contiene declaraciones que realizan operaciones y transformaciones en elstudent relación, como se muestra a continuación.

student = LOAD 'hdfs://localhost:9000/pig_data/student_details.txt' USING PigStorage(',')
   as (id:int, firstname:chararray, lastname:chararray, phone:chararray, city:chararray);
	
student_order = ORDER student BY age DESC;
  
student_limit = LIMIT student_order 4;
  
Dump student_limit;
  • La primera declaración del script cargará los datos en el archivo llamado student_details.txt como una relación llamada student.

  • La segunda declaración del guión organizará las tuplas de la relación en orden descendente, según la edad, y la almacenará como student_order.

  • La tercera declaración del script almacenará las primeras 4 tuplas de student_order como student_limit.

  • Finalmente, la cuarta declaración volcará el contenido de la relación. student_limit.

Ejecutemos ahora el sample_script.pig Como se muestra abajo.

$./pig -x mapreduce hdfs://localhost:9000/pig_data/sample_script.pig

Apache Pig se ejecuta y le da la salida con el siguiente contenido.

(7,Komal,Nayak,24,9848022334,trivendram)
(8,Bharathi,Nambiayar,24,9848022333,Chennai) 
(5,Trupthi,Mohanthy,23,9848022336,Bhuwaneshwar) 
(6,Archana,Mishra,23,9848022335,Chennai)
2015-10-19 10:31:27,446 [main] INFO  org.apache.pig.Main - Pig script completed in 12
minutes, 32 seconds and 751 milliseconds (752751 ms)